繁体   English   中英

Swagger与Spring Rest:api-docs不会生成json

[英]Swagger with Spring Rest : api-docs does not generate the json

我正在尝试将swagger2与我的Spring MVC集成。 但是,当我尝试访问http:// myhost / myapp / api-docs时 ,无法获取json。 您能否帮助我找出我的代码出了什么问题。

我的Pom.xml(与swagger相关)

<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> 

我的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>

我的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",
                "me@wherever.com", 
                "API License", 
                "API License URL");
        return apiInfo;
    }      
}

我的控制器

@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;
 }
}  

我不确定在这里是否缺少任何东西。 但是,当我尝试访问http:// localhost:8080 / MyApp / api-docs时 ,无法看到json。

如果有人可以对此表示感谢,我将非常感激。

谢谢,史密斯

正确的网址是http:// localhost:8080 / MyApp / v2 / api-docs

您还可以访问swagger ui http:// localhost:8080 / MyApp / swagger-ui.html

SwaggerConfig类的顶部使用@EnableSwagger2批注。

在您的mvc-dispatcher.xml文件中,添加<bean name="swaggerConfig" class="com.smith.spring.swagger.SwaggerConfig"/>

同样不确定是否需要,但将<mvc:resources location="classpath:/META-INF/resources/swagger-ui.html" mapping="swagger-ui.html" />更改为<mvc:resources location="classpath:/META-INF/resources/" mapping="swagger-ui.html" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM