在spring mvc项目中改变swagger基本路径

时间:2016-05-13 13:23:51

标签: spring-mvc swagger swagger-ui

我已在Spring MVC项目中配置了Swagger。

在web.xml中,我使用了/rest/* servlet-mapping

 <servlet>
    <servlet-name>mvc-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>mvc-dispatcher</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>

我可以使用下面的url访问swagger api-doc,并且每件事都可以:

http://localhost:8080/rest/v2/api-docs

但是problem正在使用swagger-ul访问api。 Swagger使用http://localhost:8080/(在我的localhost中)来访问API。

我尝试创建swagger.properties文件来更改基本路径但不起作用。 (&#39; http://www.3pillarglobal.com/insights/restful-api-documentation-using-swagger-and-spring-mvc&#39)

enter image description here

当我将/rest/*更改为/*时,Swagger-ui正常工作,但由于我无法做到这一点。

如何更改swagger基本路径以使其正常工作?

2 个答案:

答案 0 :(得分:3)

首先请确保您使用的是springfox的lates版本(撰写本文时为2.4.0)。我注意到该链接引用了一个非常旧的版本springfox。

更新后,您可以使用文档来指定pathMapping

....
docket.pathMapping("/rest")
...

答案 1 :(得分:1)

如果你已经在localhost下使用Swagger:8080 / rest /我认为你的案例中唯一缺少的是你可以打开swagger-ui index.html文件,查找url参数并将其更改为任何url你有暴露Swagger的定义:

url = "http://localhost:8080/rest/v2/api-docs/swagger.json";

或者确保无论什么时候调用swagger-ui index.html,都会出现这样的情况:

http://localhost:8080/swagger-ui/index.html?url=/rest/v2/api-docs/swagger.json

现在,如果要更改Swagger定义URL的公开路径,可以创建一个从ApiListingResource扩展的类并覆盖Path,如下所示:

@Path("/rest/v2/api-docs/swagger.{type:json|yaml}")
public class UMSApiListingResource extends ApiListingResource {
}

注意:虽然我使用的是RestEasy而不是Spring MVC,但它应该非常相似。