【发布时间】:2015-12-14 16:50:18
【问题描述】:
我正在使用 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 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”?我可以以某种方式覆盖它吗?
【问题讨论】:
-
你能贴出
rest-resource来自哪里的代码吗?你有控制器类的 RequestMapping 和没有提到那个字符串的方法。 -
'rest-resource' 在 web.xml 中定义
servlet-mapping>spring org.springframework.web.servlet.DispatcherServlet 1 spring /rest-资源/*
标签: java spring-mvc swagger swagger-ui