java - 带 Spring 休息的 Swagger : api-docs does not generate the json

标签 java rest spring-mvc swagger springfox

我正在尝试将 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",
                "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="026f6742756a6770677467702c616d6f" rel="noreferrer noopener nofollow">[email protected]</a>", 
                "API License", 
                "API License URL");
        return apiInfo;
    }      
}

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

我不确定我是否遗漏了任何东西。但是当我尝试访问http://localhost:8080/MyApp/api-docs时,我看不到 json。

如果有人能阐明这一点,我将非常感激。

谢谢史密斯

最佳答案

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

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

使用@EnableSwagger2注释在您的 SwaggerConfig 之上类。

在您的 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" />

关于java - 带 Spring 休息的 Swagger : api-docs does not generate the json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36196244/

相关文章:

security - 使用 REST API 登录 TeamCity 服务器,无需在 url 中传递凭据

spring - 如何在Spring的请求参数中发送特殊字符

java - 从深度递归父子关系构建 JSON

rest - 寻找 RESTful 方法来更新具有相同字段集的多个资源

java - 客户端的html文件加密

angularjs - 我应该将 Angularjs 文件保存在我的 Web 应用程序中的什么位置,我应该如何构建我的路由和资源?

java - Angular 2 基础知识 - 与 Spring Boot 集成 - Angular 2 实例可以在服务器内运行

java - 单个应用程序中有两个版本的 Spring Framework?

javascript - 使用 GWT 时找不到 Firebase Service worker(404 错误)

java - 解析文件中的信息