玩转Spring Boot2.x 之 整合丝袜哥(swagger)篇
原文:https://zhuoqianmingyue.blog.csdn.net/article/details/82749274
作者: 桌前明月
作为一个后端开放者,当你开发完API接口后为写文档而烦恼吗?当app开发人员或前端开发人员看不懂的你写的接口文档,你还得去给他们讲一遍怎么使用而烦恼吗?使用我介绍的swagger 这些烦恼统统的消失。swagger 一个集预览和测试于一身的在线可视化 RESTful 风格的 Web 服务框架。

好啦,我们不扯蛋直接切入正题体,在 SpringBoot 中使用 swagger 第一个步骤是先引入 swagger 的依赖到pom 文件中。
<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>
编写API 服务:一个用户的增删改查。
package cn.lijunkui.springbootlearn.swagger;
@Data
public class User {
private String name;
private Integer age;
}UserController :
package cn.lijunkui.springbootlearn.swagger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
@RestController()
@RequestMapping("/user")
public class UserController {
Logger log = LoggerFactory.getLogger(UserController.class);
/**
* 根据用户id 查询用户
* @return
*/
@GetMapping("/{id}")
public User get(@PathVariable(name = "id") Long id){
User user = new User();
user.setName("lijunkui");
user.setAge(18);
log.info("springboot查询用户成功:"+"id:{}",id);
return user;
}
/**
* 添加用户
*/
@PostMapping()
public void add(User user){
log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
/**
* 全部更新
* @param user
*/
@PutMapping()
public void updatePut(User user){
log.info("springboot Put 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
/**
* 局部更新
*/
public void updatePatch(@PathVariable("name") String name){
log.info("springboot Patch 修改用户成功:"+"name:{}",name);
}
/**
* 删除用户
*/
@DeleteMapping("/{id}")
public void delete(@PathVariable("id") Long id){
User user = new User();
user.setName("lijunkui");
user.setAge(18);
log.info("springboot 删除用户成功:"+"id:{}",id);
}
/**
* 根据requestBody 更新用户信息
* @param user
* @return
*/
@PostMapping("/updateUserByRequestBody")
public void updateUserByRequestBody(@RequestBody User user){
log.info("updateUserByRequestBody 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
}编写swagger Config 使用 swagger :
package cn.lijunkui.springbootlearn.swagger;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
//让Spring来加载该类配置
@Configuration
//是否禁用swagger 的配置
@ConditionalOnProperty(prefix = "swagger",value = {"enable"},havingValue = "true")
//启用Swagger2
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket alipayApi() {
return new Docket(DocumentationType.SWAGGER_2)
.groupName("简单用户管理API接口文档")
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.ljk.springBootLearn.users"))
.paths(PathSelectors.any()).build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("SprignBoot学习专栏")
.description("集成swagger")
.termsOfServiceUrl("https://blog.csdn.net/ljk126wy")
//创建人
.contact(new Contact("桌前明月", "http://www.baidu.com", ""))
//版本
.version("1.0")
//API 描述
.description("简单介绍如有问题还望指正")//
.build();
}
}application.yml 配置内容:
server: port: 8080 #浏览器访问项目端口号 servlet: context-path: /springootLearn #浏览器访问项目的名称 swagger: enable: true


添加用户
我们可以添加用户进行测试

我们这里就不一个个进行测试啦。
接下来 我们开始对每个接口进行接口描述介绍:
package cn.lijunkui.springbootlearn.swagger;
import io.swagger.annotations.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
@Api(tags ="用户管理")
@RestController()
@RequestMapping("/user")
public class UserController {
Logger log = LoggerFactory.getLogger(UserController.class);
/**
* 根据用户id 查询用户
* @return
*/
@ApiOperation(value="根据id获取用户信息")
@ApiImplicitParam(paramType= "path", name = "id", value = "用户id", required = true, dataType = "Long")
@GetMapping("/{id}")
@ApiResponses({ @ApiResponse(code = 400, message = "请求无效 (Bad request)") })
public User get(@PathVariable(name = "id") Long id){
User user = new User();
user.setName("lijunkui");
user.setAge(18);
log.info("springboot查询用户成功:"+"id:{}",id);
return user;
}
/**
* 添加用户
*/
@ApiOperation(value="添加用户")
@ApiImplicitParams({
@ApiImplicitParam(name="name",value="用户名",dataType="string", required = true, paramType = "form",example="ljk"),
@ApiImplicitParam(name="age",value="用户年龄",dataType="int", paramType = "form")})
@PostMapping()
public void add(User user){
log.info("springboot添加用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
/**
* 全部更新
* @param user
*/
@PutMapping()
public void updatePut(User user){
log.info("springboot Put 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
/**
* 局部更新
*/
public void updatePatch(@PathVariable("name") String name){
log.info("springboot Patch 修改用户成功:"+"name:{}",name);
}
/**
* 删除用户
*/
@DeleteMapping("/{id}")
public void delete(@PathVariable("id") Long id){
User user = new User();
user.setName("lijunkui");
user.setAge(18);
log.info("springboot 删除用户成功:"+"id:{}",id);
}
/**
* 根据requestBody 更新用户信息
* @param user
* @return
*/
@PostMapping("/updateUserByRequestBody")
public void updateUserByRequestBody(@RequestBody User user){
log.info("updateUserByRequestBody 修改用户成功:"+"name:{},age:{}",user.getName(),user.getAge());
}
}@Api :说明接口类的作用。


@ApiOperation 用在方法上 说明方法的作用 @ApiImplicitParam 方法中参数的说明 paramType head 请求参数获取 @RequestHeader query 请求参数获取 @RequestParam path 请求参数获取 @PathVariable body form name 参数名 value 参数的意思 required 参数是否必传 dataType 参数类型 defaultValue 默认值


@ApiImplicitParams:添加多个方法中参数的说明 包含 @ApiImplicitParam :


@ApiModel:描述model信息
@ApiModelProperty:描述model属性的信息
@ApiModel(value="user对象",description="用户对象user")
@Data
public class User {
@ApiModelProperty(value="用户名",name="name",example="xingguo")
private String name;
@ApiModelProperty(value="年龄1",name="age",required=true)
private Integer age;
}

@ApiResponses @ApiResponse 错误相应信息描述:


参考文献:https://yq.aliyun.com/articles/181435 源码地址:https://github.com/zhuoqianmingyue/springbootexamples
相关推荐
SAMXIE 2020-11-04
XuDanT 2020-09-16
permanent00 2020-09-15
哈嘿Blog 2020-09-08
Qizonghui 2020-08-02
莫问前程 2020-08-02
SAMXIE 2020-07-26
XuDanT 2020-07-24
莫问前程 2020-07-18
Qizonghui 2020-07-18
coolhty 2020-07-05
Qizonghui 2020-06-28
Qizonghui 2020-06-25
莫问前程 2020-06-22
SAMXIE 2020-06-14
莫问前程 2020-06-14
XuDanT 2020-06-07
qingjiuquan 2020-06-07
TimeMagician 2020-06-03