Reputation: 23
I am trying to integrate swagger2 with my Spring MVC. But when I try to access http://myhost/myapp/api-docs, I am not able to get the json. Could you please help me to figure out whats going wrong with my code.
My Pom.xml (swagger related)
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.2.2</version>
</dependency>
My web.xml
<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>/*</url-pattern>
</servlet-mapping>
My mvc-dispatcher.xml
<context:component-scan base-package="com.smith.spring.ws" />
<context:component-scan base-package="com.smith.spring.swagger" />
<mvc:annotation-driven/>
<mvc:resources location="classpath:/META-INF/resources/swagger-ui.html" mapping="swagger-ui.html" />
<mvc:resources location="classpath:/META-INF/resources/webjars/" mapping="/webjars/**" />
SwaggerConfig.java
public class SwaggerConfig{
@Autowired
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.groupName("person")
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(
"My Project's REST API",
"This is a description of your API.",
"API TOS",
"url",
"[email protected]",
"API License",
"API License URL");
return apiInfo;
}
}
My Controller
@RestController
@RequestMapping("/person")
@Api(value="Person Rest Service")
public class PersonController {
@RequestMapping(value="/getPerson",method=RequestMethod.GET)
@ApiOperation(value = "Fetch a person")
public @ResponseBody Person getPersons() {
Person person = new Person();
person.setFirstname("fname");
person.setLastname("lname");
person.setAge(37);
person.setDepartment("dept");
return person;
}
}
I am not sure if I am missing anything here. But when I try to access http://localhost:8080/MyApp/api-docs, I am not able to see the json.
I would be really grateful if someone can throw light on this.
Thanks,Smith
Upvotes: 2
Views: 5240
Reputation: 10987
Correct url is http://localhost:8080/MyApp/v2/api-docs
You can also access swagger ui http://localhost:8080/MyApp/swagger-ui.html
Use @EnableSwagger2
annotation on top of your SwaggerConfig
class.
In your mvc-dispatcher.xml
file add <bean name="swaggerConfig" class="com.smith.spring.swagger.SwaggerConfig"/>
Also not sure if necessary but change <mvc:resources location="classpath:/META-INF/resources/swagger-ui.html" mapping="swagger-ui.html" />
to <mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html" />
Upvotes: 3