swagger的概念及其配置 |
Swagger是一款RESTFUL接口的在线生成+功能测试功能软件
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.22.RELEASE</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.7</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.31</version>
</dependency>
public class User implements Serializable {
private Integer userId;
private String userName;
private String sex;
private Date birthDate;
}
Swagger配置类
package com.szxs.controller;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@EnableSwagger2
//@ComponentScan(basePackages = {"com.szxs.controller"})
@Configuration
public class SwaggerConfig extends WebMvcConfigurationSupport {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo(){
System.out.println("启动了配置..........................................");
return new ApiInfoBuilder()
.title("爱旅行-用户模块API")
/* .termsOfServiceUrl("http://www.alx.com/user")
.contact("爱旅行")*/
.contact(new Contact("爱旅 行","http://www.alx.com/user","212121@qq.com"))
.version("1.0")
.build();
}
}
类使用
package com.szxs.controller;
import com.szxs.entity.User;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@Controller
@Api(value="Api",basePath = "/http://api.alx.com/user")
public class UserController {
@ApiOperation(value = "查询用户数据",httpMethod = "POST",produces ="application/json" ,protocols ="HTTP" ,
response = User.class,notes = "查询用户数据"+"<p>成功:success = 'true' | 失败: success ='false' 并返回错误码. 如下: </p >"+
"<p>错误码:</p >"+
"<p>20001:系统异常,获取失败</p >"+
"<p>20002:目的地不能为空</p >")
// @RequestMapping(value = "/searchUsers",produces = "application/json",method = RequestMethod.POST)
@PostMapping(value = "/searchUsers")
@ResponseBody
public User searchUsers(@RequestBody User vo){
return new User(vo.getUserId(),vo.getUserName(),vo.getSex(),vo.getBirthDate());
}
@ApiOperation(value = "根据用户ID查询用户数据",httpMethod = "GET",produces ="application/json" ,protocols ="HTTP" ,
response = User.class,notes = "查询用户数据"+"<p>成功:success = 'true' | 失败: success ='false' 并返回错误码. 如下: </p >"+
"<p>错误码:</p >"+
"<p>20001:系统异常,获取失败</p >"+
"<p>20002:目的地不能为空</p >")
// @RequestMapping(value = "/searchUsers/{id}",produces = "application/json",method = RequestMethod.GET)
@GetMapping(value = "/searchUsers/{id}")
@ResponseBody
public User searchUsersById(@ApiParam(required = true,name = "id",value = "用户名ID") @PathVariable Integer id){
return new User(id,"李四","男",new Date());
}
}
springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:contest="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<!--使用Swagger Restful Api文档时,添加此注解-->
<mvc:default-servlet-handler/>
<!--扫描控制器类-->
<contest:component-scan base-package="com.szxs.controller">
<contest:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<contest:include-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
<contest:include-filter type="annotation" expression="org.springframework.scheduling.annotation.Scheduled"/>
</contest:component-scan>
<!--对模型视图名称的视图,即在模型视图名称添加前后缀-->
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="UTF-8"/>
</bean>
<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="defaultCharset" value="utf-8"/>
<property name="fastJsonConfig">
<bean class="com.alibaba.fastjson.support.config.FastJsonConfig">
<property name="serializerFeatures">
<list>
<value>WriteMapNullValue</value>
<value>WriteNullNumberAsZero</value>
<value>WriteNullListAsEmpty</value>
<value>WriteNullStringAsEmpty</value>
<value>WriteNullBooleanAsFalse</value>
<value>WriteDateUseDateFormat</value>
</list>
</property>
</bean>
</property>
<property name="supportedMediaTypes">
<list>
<value>application/json;charset=UTF-8</value>
<value>text/html;charset=UTF-8</value>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
</beans>
web.xml文件
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
alue>classpath:springmvc.xml
springmvc
/