Java 有没有办法让Restlet-Swagger扩展限制它所显示的API?
有没有办法让Restlet-Swagger扩展限制它所显示的APIJava 有没有办法让Restlet-Swagger扩展限制它所显示的API?,java,google-app-engine,restlet,swagger,Java,Google App Engine,Restlet,Swagger,有没有办法让Restlet-Swagger扩展限制它所显示的API 我们的API中有一些路径不应该被分解(目前为止),有什么策略可以确保至少只公开特定的org.restlet.routing.Router?由于应用程序中有许多路由器。这是不可能开箱即用的。更简单的方法是IMO修补扩展org.restlet.extension.swagger: 更新类SwaggerSpecificationRestlet的方法getSwagger,以允许更新自检定义筛选,如下所述: public Represe
我们的API中有一些路径不应该被分解(目前为止),有什么策略可以确保至少只公开特定的
org.restlet.routing.Router
?由于应用程序中有许多路由器
。这是不可能开箱即用的。更简单的方法是IMO修补扩展org.restlet.extension.swagger
:
- 更新类
的方法SwaggerSpecificationRestlet
,以允许更新自检定义筛选,如下所述:getSwagger
public Representation getSwagger() { Definition definition = getDefinition(); // The method to add for filtering the instropected structure filterDefinition(definition); Swagger swagger = Swagger2Translator.getSwagger(definition); (...) } protected void filterDefinition(Definition definition) { }
- 在应用程序中,通过重写方法
配置此类:GetSwagger SpecificationRestlet
public SwaggerSpecificationRestlet getSwaggerSpecificationRestlet( Context context) { SwaggerSpecificationRestlet result = new SwaggerSpecificationRestlet(this) { protected void filterDefinition(Definition definition) { (...) } }; result.setApiInboundRoot(this); return result; }
filterDefinition
的示例:
private Definition filterDefinition(Definition definition) {
List<Resource> resourcesToRemove = new ArrayList<>();
Contract contract = definition.getContract();
for (Resource resource : contract.getResources()) {
resourcesToRemove.add(resource);
}
for (Resource resource : resourcesToRemove) {
contract.getResources().remove(resource);
}
return definition;
}
专用定义过滤器定义(定义){
List resourcesToRemove=新建ArrayList();
合同=定义。getContract();
for(资源:contract.getResources()){
resourcesToRemove.add(资源);
}
for(资源:resourcesToRemove){
contract.getResources().remove(资源);
}
返回定义;
}
希望它能帮助你,
Thierry在SwaggerSpecificationRestlet类中没有getSwagger()方法?版本2.3.1我尝试在我的代码中添加日志,唯一触发的是getSwagger SpecificationRestlet()方法,而不是filterDefinition()看到了吗?这是因为getSwagger()未被重写?但是我找不到那种方法。。。