从零搭建后端框架:对方不想说话但扔了个swagger2

现在大部分公司的软件架构都是微服务+前后端分离,说到前后端分离,不仅仅是因为技术架构的迭代更新导致的,主要还是因为产品经历了从无到有从增量到存量的时间,用户的需求已经从能用到好用。产品除了要快速迭代抢占市场外,还需要提高用户体验博取眼球。所以前后端的分离,也衍生除了前端工程师、后端工程师来共同完成一个功能的开发。
所以接下来要考虑的问题,如何制定前后端的接口规范,如何提供接口清单。前面的问题现在已经解决了,所以很多研发团队都是后端工程师写好接口文档后,自己先用postman测一下,然后写一份接口清单文档,发给前端,如果接口调整了,又要写一个文档。而且经常因为接口文档写的不好、给的太慢,被前端和TL怼。花少也被怼过几次,傲娇的花少闹起了小脾气,所以在工位上放了纸条“花少已死,有事扫支”,同时扔了个swagger2
在这里插入图片描述

花少揭秘四部曲:
1、添加Maven依赖

io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui 2.9.2

2、创建Swagger配置

创建Swagger配置
@Configuration
@EnableSwagger2
public class SwaggerConfig {

@Bean
public Docket docket() {
    return new Docket(DocumentationType.SWAGGER_2)
            .select()
            // apis 指定生成API的扫描条件
            .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
            // 扫描包
            //.apis(RequestHandlerSelectors.basePackage("com.zhuqc.framework.controller"))
            // paths 指定生成API的path
            .paths(PathSelectors.any())
            .build()
            // 文档信息
            .apiInfo(apiInfo());
}

private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
            .title("花少教你从零搭建后端框架")
            .description("API接口文档")
            .termsOfServiceUrl("https://www.baidu.com/")
            .contact(new Contact("花少", "", ""))
            .version("0.0.1")
            .build();
}

}

@EnableSwagger2 开启Swagger2
apis 用来指定扫描的条件
RequestHandlerSelectors.basePackage(“com.zhuqc.framework.controller”),扫描指定包
RequestHandlerSelectors.withClassAnnotation((Api.class),扫描@Api标注的类
RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class),扫描@ApiOperation标注的方法
RequestHandlerSelectors.any(),总是true
RequestHandlerSelectors.none(),总是false
默认配置是没有@ApiIgnore标注的类和方法
paths 用来指定生成API的path
PathSelectors.any(),总是true
PathSelectors.none(),总是false
PathSelectors.regex(),正则表达式匹配
PathSelectors.ant(),Ant表达式匹配
apiInfo 用来指定文档信息

3、Swagger使用
@Api(description = “花少向你扔了个Swagger2”)
@RestController
public class HelloController {

@ApiOperation(value = "需求", notes = "花少的需求")
@ApiImplicitParams({
        @ApiImplicitParam(name = "name", value = "需求", required = true)
})
@GetMapping("/hello/{name}")
public String hello(@PathVariable String name) {
    return String.format("花少需要你们的 %s!", name);
}

}
常见注解
@Api 修饰整个类,描述整个Controller的作用
@ApiOperation 修饰方法,描述方法的作用
@ApiParam 修饰参数,描述参数的作用
@ApiIgnore 表示忽略当前API
@ApiImplicitParams 描述多个请求参数
@ApiImplicitParam 描述一个请求参数
@ApiModel 如果参数是对象,则在对象所在类上标注,用于描述对象
@ApiModelProperty 如果参数是对象,则在对象所在类的属性上标注,用于描述对象的属性

4、启动项目
准备工作已完成,启动项目后访问Swagger地址:http://localhost:8080/swagger-ui.html
测试效果如下:
在这里插入图片描述
在这里插入图片描述

到这里Swagger2已集成完毕,不过我们还是要养成在开发或修改完接口的同时,顺手修改下接口描述,否则咱们帅不过三秒瞬间打脸,只能宣告装死失败!

花有重开日,人无再少年 → 我是花少【少宫主花无缺】#更新不断,创作不易#走过路过不不白piao,留下关注和点赞(公众号同名)@all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值