我正在将swagger集成到我的play应用程序中。它工作正常。(播放2.2 +挥舞1.3.3)
尽管为每个模型都添加了一个我需要隐藏的字段
Classification {
id (integer, optional),
type (string, optional),
shortCode (string, optional),
active (boolean, optional),
**_ebean_intercept (EntityBeanIntercept, optional)**
}
我在Scala中创建了一个自定义转换器(顺便说一下,我的应用是用Java编写的)
class IgnoreConverter extends SwaggerSchemaConverter {
override def skippedClasses: Set[String] = Set("com.avaje.ebean.bean.EntityBeanIntercept")
override def ignoredClasses: Set[String] = Set("com.avaje.ebean.bean.EntityBeanIntercept")
override def ignoredPackages: Set[String] = Set("com.avaje.ebean")
}
通过Globals.java加载Play应用时,我正在添加此转换器
@Override
public void onStart(Application application) {
Logger.info("Registering custom converter");
//HideModelConverter converter = new HideModelConverter();
IgnoreConverter converter = new IgnoreConverter();
ModelConverters.addConverter(converter, true);
}
仍然没有运气。
有人可以给我一些想法,我应该去哪里看?
如何隐藏Swagger自省的字段,类和包?Swagger为什么不理会我的转换器?
谢谢你的帮助
我一直在遇到同样的问题。我认为它来自在onStart()有机会运行之前加载的Swagger模块。因此,如果您更改了某些内容,则应用程序将重新加载,并且可以正常工作。
我通过将加载从onStart更改为beforeStart来固定它:
@Override
public void beforeStart(Application app) {
Logger.info("Registering custom converter");
ModelConverters.addConverter(new IgnoreConverter(), true);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句