Swagger2 是一个开源我的项目,用于为 RESTful Web 服务生成 REST API 文档。它提供了一个用户界面,能够通过 Web 浏览器拜访咱们的 RESTful Web 服务,测试接口。
SpringBoot集成Swagger2 3.0以下版本
pom.xml
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version></dependency>
Swagger2Config
配置文件
package com.rumenz.lession9.controller.config;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;/** * @className: Swagger2Config * @description: TODO 类形容 * @author: 入门小站 rumenz.com * @date: 2021/11/10 **/@Configuration@EnableSwagger2 //Swagger2 3.0以下版本须要开启的注解public class Swagger2Config { @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.rumenz.lession9.controller")) .paths(PathSelectors.any()).build(); } private ApiInfo apiInfo(){ Contact contact=new Contact("入门小站", "https://rumenz.com", "xenry@163.com"); return new ApiInfoBuilder() .title("入门小站接口文档") .description("https://rumenz.com") .contact(contact).build(); }}
3.0以下开启
@EnableSwagger2
这个注解浏览器拜访
http://127.0.0.1:8080/swagger-ui.html
SpringBoot集成Swagger2 3.0以版本
Swagger2 3.0版本应用更加简略
pom.xml
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> <version>3.0.0</version></dependency>
Swagger2Config
配置问价相差不大。
package com.rumenz.lession9.controller.config;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;/** * @className: Swagger2Config * @description: TODO 类形容 * @author: 入门小站 rumenz.com * @date: 2021/11/10 **/@Configurationpublic class Swagger2Config { @Bean public Docket docket(){ return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.rumenz.lession9.controller")) .paths(PathSelectors.any()).build(); } private ApiInfo apiInfo(){ Contact contact=new Contact("入门小站", "https://rumenz.com", "xenry@163.com"); return new ApiInfoBuilder() .title("入门小站接口文档") .description("https://rumenz.com") .contact(contact).build(); }}
3.0以上版本不须要@EnableSwagger2
这个注解
启动类增加注解
package com.rumenz;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import springfox.documentation.oas.annotations.EnableOpenApi;@SpringBootApplication@EnableOpenApi //Swagger2 3.0以上版本须要开启的注解public class Lession9Application { public static void main(String[] args) { SpringApplication.run(Lession9Application.class, args); }}
留神增加@EnableOpenApi
注解
浏览器拜访http://127.0.0.1:8080/swagger-ui/
Swagger2罕用注解
@Api
@Api用在类上,用于阐明类性能的阐明
@Api(tags = "入门小站Controller入口",value = "页面上看不见的内容")
@ApiOperation
@ApiOperation(value = "办法的作用阐明",notes = "办法的备注阐明")
@ApiImplicitParams,@ApiImplicitParam
入参数阐明
@ApiImplicitParams({@ApiImplicitParam(name = "page",value = "当前页"),@ApiImplicitParam(name = "pageSize",value = "分页大小")})
@ApiImplicitParam
其它参数
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个申请参数的各个方面 name:参数名 value:参数的汉字阐明、解释 required:参数是否必须传 paramType:参数放在哪个中央 · header --> 申请参数的获取:@RequestHeader · query --> 申请参数的获取:@RequestParam · path(用于restful接口)--> 申请参数的获取:@PathVariable · body(不罕用) · form(不罕用) dataType:参数类型,默认String,其它值dataType="Integer" defaultValue:参数的默认值
@ApiResponses
明申请返回的状态码及形容
@ApiResponses({@ApiResponse(code = 200,message = "胜利"),@ApiResponse(code=201,message = "参数谬误")})
@ApiModel
形容实体类
@ApiModel("用戶信息")
@ApiModelProperty
形容实体类的属性
@ApiModelProperty(value = "名字",name = "name",example = "入门小站")
演示案例
RumenzController
package com.rumenz.lession9.controller;import io.swagger.annotations.*;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.springframework.web.bind.annotation.*;/** * @className: RumenzController * @description: TODO 类形容 * @author: 入门小站 rumenz.com * @date: 2021/11/10 **/@RestController@RequestMapping("/rumenz")//@Api用在类上,用于阐明类性能的阐明@Api(tags = "入门小站Controller入口",value = "页面上看不见的内容")public class RumenzController { @GetMapping("/index") public String index(){ return "入门小站"; } @GetMapping("/user") @ApiOperation(value = "办法的作用阐明",notes = "办法的备注阐明") //传入参数阐明 @ApiImplicitParams({@ApiImplicitParam(name = "page",value = "当前页"),@ApiImplicitParam(name = "pageSize",value = "分页大小")}) //阐明申请返回的状态码及形容 @ApiResponses({@ApiResponse(code = 200,message = "胜利"),@ApiResponse(code=201,message = "参数谬误")}) public String index1(@ApiParam("页数") @RequestParam("page") Integer page,@ApiParam("每页条数") Integer pageSize){ return "入门小站"; } @PostMapping("/save") @ApiOperation("保留用户") public String save(@RequestBody User user){ return "入门小站"; }}@Data@NoArgsConstructor@AllArgsConstructor//形容实体类@ApiModel("用戶信息")class User { //形容实体类的属性 @ApiModelProperty(value = "名字",name = "name",example = "入门小站") private String name; @ApiModelProperty(value = "年龄",name="age",example = "20") private Integer age; @ApiModelProperty(value = "地址",name="address",example = "rumenz.com") private String address; @ApiModelProperty(value = "邮箱",name="email",example = "372669319@qq.com") private String email;}
在线测试接口能够点击
Try it out
填入相干参数测试。本小结源码地址:
- GitHub:https://github.com/mifunc/spr...
- Gitee:https://gitee.com/rumenz/spri...
- https://rumenz.com/rumenbiji/...
介绍
- 我的博客 https://rumenz.com/ ,
- 我的工具箱 https://tooltt.com/
- 微信公众号:【入门小站】
- 关注【入门小站】回复【1001】获取 linux常用命令速查手册
- 关注【入门小站】回复【1003】获取 LeetCode题解【java语言实现】
- 关注【入门小站】回复【1004】获取 Java根底外围总结
- 关注【入门小站】回复【1009】获取 阿里巴巴Java开发手册