SpringBoot整合Swagger

引言

在前后端开发过程中,为了减少前后端程序员以及与其他团队之间的沟通成本,因此要定义一组公共的API接口文档来描述所有接口方法的信息。但是这种方式在某一方面也存在很大的弊端,如下:

  • 如果开发人员所描写的接口数量众多,一方面编写API接口文档工作量巨大,另一方面因为API接口不仅包含接口的基础信息,例如:请求参数‘请求类型及接口的返回值等等,还要包含HTTP请求类型,请求头、请求参数类型等;
  • 后期维护不方便,一旦编写的接口发生变化,就要修改此API接口文档;
  • 接口测试不方便,一般只能靠第三方客户端来测试
一、Swagger 2简介

Swagger 2是一个开源的软件框架,可以帮助开发人员设计、构建和使用Web服务,将代码与文档结合在一起,完美的解决了上述问题,使开发人员将大部分精力集中到业务中,而不是文档的撰写。

二、SpringBoot集成Swagger
2.1引入Swagger的依赖
<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--swagger-->
 <dependency>
       <groupId>io.springfox</groupId>
       <artifactId>springfox-swagger2</artifactId>
       <scope>compile</scope>
       <version>2.9.2</version>
</dependency>
<dependency>
       <groupId>io.springfox</groupId>
       <artifactId>springfox-swagger-ui</artifactId>
       <scope>compile</scope>
       <version>2.9.2</version>
</dependency>
2.2编写Swagger 2配置类
package com.org.comunity.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    Docket docket(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
.apis(RequestHandlerSelectors.basePackage("com.org.comunity"))
                .build().apiInfo(new ApiInfoBuilder().description("xxxx管理系统")
                .contact(new Contact("xxx", "https://www.xxx.com", "xxxx@163.com"))
                .version("V1.0").title("API测试文档")
                .license("Apache2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")
                .build());
    }
}

解释:
RequestHandler=Selectors.basePackage(“com.org.comunity”)
com.org.comunity为所要扫描的控制器即接口

2.3编写控制器类测试
package com.org.comunity.controller;

import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class RootController {

    @ApiOperation("测试")
    @RequestMapping("/hello")
    public String test(){
        return "Hello World!";
    }
}

Swagger 2注解解释

注解作用参数
@Api表示标识这个类是swagger的资源1.tags=“说明该类的作用,可以在UI界面上看到的注解”
2.value="该参数没什么意义,在UI界面上也看到,所以不需要配置"
@ApiOperation用在请求的方法上,说明方法的用途、作用,表示一个http请求的操作value=“说明方法的用途、作用”
notes="方法的备注说明"
@ApiImplicitParams用在请求的方法上,表示一组参数说明,用于方法,包含多个 @ApiImplicitParamname–参数ming
value–参数说明
dataType–数据类型
paramType–参数类型
example–举例说明
@ApiImplicitParam用在@ApiImplicitParams注解中,指定一个请求参数的各个方面,表示单独的请求参数name:参数的汉字说明、解释
value:参数名
required:参数是否必须传
paramType:参数放在哪个地方
header: 请求参数的获取:
@ApiIgnore用于类,方法,方法参数表示这个方法或者类被忽略 ,可以不被swagger显示在页面上
@RequestHeader指定请求类型query:请求参数的获取:
@ApiParam用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等name–参数名
value–参数说明
required–是否必填
@PathVariable是获取get方式,url后面参数,进行参数绑定,对应pathbody(不常用)form(不常用) dataType:参数类型,默认String,其它值dataType=“Integer” defaultValue:参数的默认值
@ApiResponses用在请求的方法上,表示一组响应code http的状态码
message 描述
response 默认响应类 Void
reference 参考ApiOperation中配置
responseHeaders 参考 ResponseHeader 属性配置说明
responseContainer 参考ApiOperation中配置
@ApiResponse用在@ApiResponses中,一般用于表达一个错误的响应信息code:数字,例如400
message:信息,例如"请求参数没填好"
response:抛出异常的类
@ApiModel用于响应类上,表示一个返回响应数据的信息这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)表示对类进行说明,用于参数用实体类接收暂无
@ApiModelProperty表示对model属性的说明或者数据操作更改value–字段说明
name–重写属性名字
dataType–重写属性类型
required–是否必填
example–举例说明
hidden–隐藏
@ResponseHeader用于方法上,设置响应头name 响应头名称
description 头描述
response 默认响应类 Void
responseContainer 参考ApiOperation中配置

黄色为常用注解

2.4启动应用访问swagger-ui

浏览器输入 http://localhost:8086/swagger-ui.html
8086为你的应用启动的端口号
web访问swagger
用法:
在这里插入图片描述
执行结果
以上就是SpringBoot集成Swagger 2的全部了,希望大家能够get,有问题请及时批评斧正!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值