我已在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)
当我将/rest/*
更改为/*
时,Swagger-ui正常工作,但由于我无法做到这一点。
如何更改swagger基本路径以使其正常工作?
答案 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,但它应该非常相似。