I am trying to change the base path of swagger codumentation. Currently I have
@RequestMapping(path = "/api/resourceName/v1")
and swagger config
return new Docket(DocumentationType.SWAGGER_2).
select()
.apis(RequestHandlerSelectors.basePackage("com.company"))
.paths(PathSelectors.ant("/api/**"))
.build()
.apiInfo(apiInfo());
This is giving swagger base path as "basePath": "/"
I want to add base path as "basePath": "/api"
so I followed diff threads like this How to change basePath for Springfox Swagger 2.0 and added
return new Docket(DocumentationType.SWAGGER_2).
select()
.apis(RequestHandlerSelectors.basePackage("com.company"))
.paths(PathSelectors.ant("/api/**"))
.build()
.apiInfo(apiInfo())
.pathProvider(new RelativePathProvider(servletContext) {
@Override
public String getApplicationBasePath() {
return "/api";
}
});
now the base path is changed to "basePath": "/api"
and I updated my path mapping to @RequestMapping(path = "/resourceName/v1")
as base has been added.
When I send the request from swagger, the request is going to /api/resourceName/v1
but the service returns 404
.
When I send the request through postman for /resourceName.v1
then it works.
So the api is registred as /resourceName/v1
and the base is just added by swagger on top of it and will not work if the request sent throguh swagger UI
Then I added server.servlet-path=/api
to application.properties
to register basepath in the request mapping and now swagger shows the base path as /api
without needing additional configuration.
But the problem is now swagger documentation is available at http://localhost:8080/api/swagger-ui.html
instead of http://localhost:8080/swagger-ui.html
. As we have all our other services doc at http://host/swagger-ui.html
this is not useful.
Is there any way to add the base and still access the doc at http://host/swagger-ui.html
and api's works as expected fro swagger and postman