Swagger with 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。
如果有人能阐明这一点,我将不胜感激。
谢谢,史密斯
正确的 url 是 http://localhost:8080/MyApp/v2/api-docs
你也可以访问swaggeruihttp://localhost:8080/MyApp/swagger-ui.html
在您的 SwaggerConfig
class 上使用 @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" />
我正在尝试将 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。
如果有人能阐明这一点,我将不胜感激。
谢谢,史密斯
正确的 url 是 http://localhost:8080/MyApp/v2/api-docs
你也可以访问swaggeruihttp://localhost:8080/MyApp/swagger-ui.html
在您的 SwaggerConfig
class 上使用 @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" />