Swagger Spring - 编辑 URL

Swagger Spring - Editing the URLs

我正在使用 Spring Swagger 库 v1.0.2

马文:

<dependency>
  <groupId>com.mangofactory</groupId>
  <artifactId>swagger-springmvc</artifactId>
  <version>1.0.2</version>
</dependency>

我能够扫描我的 REST API 并在 Swagger 上查看它 UI。我什至已经实施了 OAuth,而且效果很好。

我有一个独特的要求。我的控制器将 @RequestMapping 注释为

@RequestMapping("/unauthorize")
@Controller
public class SomeController {
    @RequestMapping(method = RequestMethod.GET, value = "/preferences/{preferenceName}")
    public SomeModel getDisplayPreference( @PathVariable("preferenceName") final String preferenceName ) {
    }
}

人们会假设访问 getDisplayPreference() 方法需要以下 URL:

http://www.example.com/<some-context>/unauthorize/preferences/somepreferencename

Swagger 假定并在 Swagger 的 'Try it out' 功能中 UI 试图达到上述 URL.

然而,在我们的代码中还有一个额外的URL部分如下

http://www.example.com/<some-context>/unauthorize/rest-resource/preferences/somepreferencename

所以你看到 'rest-resource' 需要成为 URL 的一部分才能进行正确的调用。由于 Swagger UI 不知道 'rest-resource' - 这不是它的错 - 每次调用都会失败。

有什么方法可以强制 Swagger 在 URL 中包含 'rest-resource'?我能以某种方式覆盖它吗?

您的 Swagger 配置是什么样的?您可以在那里设置基本路径。

查看此博客 - http://jakubstas.com/spring-jersey-swagger-configuration/#.VfsJxxHBwXA. Also a relevant discussion here - https://github.com/swagger-api/swagger-ui/issues/276

我找到了答案。

招摇-ui.js下的方法:

SwaggerSpecConverter.prototype.declaration = function(obj, swagger) {} 

有一段代码:

for(i = 0; i < obj.apis.length; i++) {
    var api = obj.apis[i];
    var path = api.path;
    var operations = api.operations;
    this.operations(path, obj.resourcePath, operations, resourceLevelAuth, swagger);
}

我更新为:

for(i = 0; i < obj.apis.length; i++) {
    var api = obj.apis[i];
    var path = '/rest-resource'+api.path;
    var operations = api.operations;
    this.operations(path, obj.resourcePath, operations, resourceLevelAuth, swagger);
}

这会在所有路径之前添加 /rest-resource 并帮助我解决问题。