本文共 4485 字,大约阅读时间需要 14 分钟。
通常在前后端开发中,为了减少一些沟通成本,一般都会构建一份 RESTful API 文档来描述所有的接口信息 Swagger 2 是一个开源软件框架,可以帮助开发人员设计、构建、记录和使用 RESTful Web 服务,它将代码和文档融为一体,
首先创建 Spring Boot Web 项目,添加 Swagger 2 的相关依赖,代码如下:
org.springframework.boot spring-boot-starter-web io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2
首先通过@EnableSwagger2注解开启 Swagger2 然后在通过 apis 这个方法配置要扫描的 controller 位置,通过 paths 方法配置路径 在 apiInfo 中构建文档的基本信息,比如描述、联系人信息、版本、标题等等
@Configuration@EnableSwagger2 //此注解表示开启 Swagger 2public class SwaggerConfig { @Bean Docket docket() { return new Docket(DocumentationType.SWAGGER_2) .select() .apis(RequestHandlerSelectors.basePackage("com.sang.swagger2.controller")) //配置 controller 的位置 .paths(PathSelectors.any()) .build().apiInfo(new ApiInfoBuilder() // 在 apiInfo 中构建文档的基本信息 .description("员工管理接口测试文档") .contact(new Contact("小白哥", "https://gitee.com/jian_bo_bai/dashboard/projects", "bai211425401@126.com")) .version("v1.0") .title("API 测试文档") .license("Apache2.0") .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0") .build()); }}
Swagger 2 配置完成后,接下来就创建 controller 接口测试,代码如下:
注解 | 作用 |
---|---|
@Api | 此注解用来描述整个 Controller 信息 |
@ApiOperation | 此注解用在开发方法上,用来描述一个方法的基本信息,value是对方法作用的一个简短描述,notes 则用来备注该方法的详细作用 |
@ApiImplicitParam | 此注解用在方法上,用来描述方法的参数,paramType 是指方法参数的类型,可选值有 path(参数获取方式 @PathVariable) query(参数获取方式 @RequestParam) header(参数获取方式 @RequestHeader) body 以及 form ; name 表示参数名称,value 是参数的描述信息,required 表示该字段是否必填,defaultValue 表示该字段的默认值 |
@ApiResponse | 此注解是对相应结果的描述,code 表示响应码, message 表示对应的描述,若有多个 @ApiResponse 则可以放在一个 @ApiResponses 中 |
@ApiIgnore | 此注解表示不对某个接口生成文档 |
@RestController@Api(tags = "用户数据接口") //此注解用来描述当前 controller 的信息public class UserController { @ApiOperation(value = "查询用户",notes = "根据 id 查询用户") @ApiImplicitParam(paramType = "path",name = "id",value = "用户id",required = true) @GetMapping("/user/{id}") public String getUserById(@PathVariable Integer id) { return "/user/" + id; } @ApiResponses({ @ApiResponse(code = 200,message = "删除成功!"), @ApiResponse(code = 500,message = "删除失败!")}) @ApiOperation(value = "删除用户",notes = "通过 id 删除用户") @DeleteMapping("/user/{id}") public Integer deleteUserById(@PathVariable Integer id) { return id; } @ApiOperation(value = "添加用户",notes = "添加一个用户,传入用户名和地址") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query",name = "username",value = "用户名",required = true,defaultValue = "sang"), @ApiImplicitParam(paramType = "query",name = "address",value = "用户地址",required = true,defaultValue = "shenzhen")}) @PostMapping("/user") public String addUser(@RequestParam String username,@RequestParam String address) { return username + ":" + address; } @ApiOperation(value = "修改用户",notes = "修改用户,传入用户信息") @PutMapping("/user") public String updateUser(@RequestBody User user) { return user.toString(); } @GetMapping("/ignore") @ApiIgnore public void ingoreMethod() {}}
@ApiModel(value = "用户实体类",description = "用户信息描述类")public class User implements Serializable { @ApiModelProperty(value = "用户名") private String username; @ApiModelProperty(value = "用户地址") private String address; public User() { super(); } public User(String username, String address) { this.username = username; this.address = address; } @Override public String toString() { return "User{" + "username='" + username + '\'' + ", address='" + address + '\'' + '}'; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; }}
启动项目,在浏览器中输入 localhost:8080/swagger-ui.html 即可看到效果图 展开用户数据接口,即可看到所有接口的描述
看完对你有帮助的话点个赞再走吧!
有问题欢迎留言讨论!转载地址:http://oiqwi.baihongyu.com/