什么是swagger?
Swagger2 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
swagger2有何作用?
- 接口的文档在线自动生成。
- 功能测试。
swagger2是一组开源项目
- Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。
- Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。
- Swagger-js: 用于JavaScript的Swagger实现。
- Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。
- Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态
- Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。
如何使用?
- 添加pom坐标依赖
<!--Swagger-UI API文档生产工具-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
- 添加一个swagger的配置类,取名为Swagger2Config
/**
* swagger的配置类
* @ClassName Swagger2Config
* @Author 药岩
* @Date 2020/1/30
* Version 1.0
*/
@Configuration
@EnableSwagger2
public class Swagger2Config {
@Bean
public Docket createRestApi(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.devin.controller"))
.paths(PathSelectors.any())
.build();
}
public ApiInfo apiInfo(){
return new ApiInfoBuilder()
.title("药岩title")
.description("药岩的API文档")
.contact("药岩")
.version("1.0")
.build();
}
}
-
swagger2常用注解说明
@Api:用在类上,说明该类的作用。
@ApiOperation: 注解来给API增加方法说明。
@ApiImplicitParams : 用在方法上包含一组参数说明。
@ApiImplicitParam: 用来注解来给方法入参增加说明。
@ApiModel: 描述一个实体类的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个实体类的属性 -
创建UserController
@RestController
@RequestMapping(value = "/user")
@Api(tags = "UserController", description = "用户管理")
public class UserController {
@Autowired
private UserService userService;
/**
* 根据id查询用户信息
* @author 药岩
* @date 2020/1/30
* @param * @param id
* @return com.devin.domain.CoinUser
*/
@RequestMapping(value = "/findById/{id}", method = RequestMethod.GET)
@ApiOperation(value = "根据id获取用户信息")
@ApiImplicitParams(@ApiImplicitParam(name = "id", value = "id", required = true, type = "int"))
public CoinUser getUser(@PathVariable("id") int id){
return userService.getUser(id);
}
/**
* 查询使用用户的信息
* @author 药岩
* @date 2020/1/30
* @param * @param
* @return java.util.List<com.devin.domain.CoinUser>
*/
@RequestMapping(value = "/getAll", method = RequestMethod.POST)
@ApiOperation(value = "获取所有用户信息")
public List<CoinUser> getAll(){
return userService.getAll();
}
/**
* 插入用户信息
* @author 药岩
* @date 2020/1/30
* @param * @param user
* @return void
*/
@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增用户信息")
public void insertUser(CoinUser user){
userService.insertUser(user);
}
}
- 创建CoinUser实体类
/**
* 用户信息
* @ClassName CoinUser
* @Author 药岩
* @Date 2020/1/30
* Version 1.0
*/
@ApiModel(value = "用户属性")
public class CoinUser {
@ApiModelProperty(value = "id", required = true)
private Long id;
@ApiModelProperty(value = "登入名", required = true)
private String loginName;
private String password;
private String email;
private String mobile;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
}
- 浏览器访问:http://localhost:8080/swagger-ui.html