当前位置:网站首页>如何形成规范的接口文档
如何形成规范的接口文档
2022-07-05 20:14:00 【幼儿园里的山大王】
一、需求
前后端对接时,后端需要提供一个规范的,或者说前端能够看明白的接口文档是一个非常重要的事。那如何使用注解快速、简单的形成接口文档呢。
二、Swagger2切换knife4j的使用
1、在pom.xml中增加knife4j的相关依赖
<!--整合Knife4j-->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
2、在Swagger2Config中增加一个@EnableKnife4j注解,该注解可以开启knife4j的增强功能
@Configuration
@EnableSwagger2
@EnableKnife4j
public class Swagger2Config {
@Bean
public Docket ssoFront() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("接口所在的包路径"))
.paths(PathSelectors.any())
.build().groupName("分组名");
}
@Bean
public Docket ssoAdmin() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.user.controller.admin"))
.paths(PathSelectors.any())
.build().groupName("sso-admin");
}
@Bean
public Docket member() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.user.controller.member"))
.paths(PathSelectors.any())
.build().groupName("member-service");
}
@Bean
public Docket system() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.user.controller.system"))
.paths(PathSelectors.any())
.build().groupName("system-service");
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("某某模块文档")
.description("用户模块API文档")
.contact(new Contact("作者", null, null))
.version("v1")
.build();
}
}
3、运行我们的SpringBoot应用,访问API文档地址即可查看:http://localhost:端口号/doc.html
三、功能特点
对比swagger来说
1、 返回结果集支持折叠,方便查看
2、 请求参数有JSON校验功能
3、 knife4j支持导出离线文档,方便发送给别人,支持Markdown格式;直接选择文档管理->离线文档
功能,然后选择下载Markdown
即可
三、根据不同的请求方式使用不同的注解形成接口文档
一、swagger注解应用
1、在控制层当中,可以在controller上使用注解@Api(tags = "接口服务名")标注这个控制器的功能。
2、在具体接口上可以使用注解@ApiOperation(value = "邮箱模糊匹配查询服务接口",notes = "对邮箱进行模糊匹配")对这个接口进行命名以及对这个接口得到功能进行描述
二、@ApiOperation与Get请求注解配合使用
1、使用注解@RequestParam(value = "传入邮箱",required = false),注意name和value不能共存,不然无法生成接口文档。swagger会自动识别这个注解生成对应文档
Get请求数据类型为:
2、使用 @PathVariable(value = "传入邮箱",required = false)也一样。区别只是请求类型不同一个是query,一个是path
3、不需要@ApiImplicitParam(name = "邮箱模糊匹配查询", value = "likeEmail", required = false)这个注解,否者会出现两个一样的参数。
三、@ApiOperation与Post请求注解配合使用
1、使用@RequestBody注解请求参数实体。实体里面在类上头加入
@ApiModel(value = "某某请求报文",description = "某某请求报文,父类是",parent = 类.class)
2、在属性中加入
@ApiModelProperty(value="某某属性",required = true)
@ApiOperation("某某请求报文")
@PostMapping("edit")
public JsonResult edit(@RequestBody EditDTO dto) {
return
}
swagger会自动扫描实体类里面加了注解的数据形成接口文档
3、post请求数据格式
四、所有返回报文如果带有返回参数的需要明确返回参数
只有带了明确返回报文,且报文里 类名@ApiModel和属性@ApiModelProperty也用了注解,那么返回报文的数据类型也会出现在接口文档中。
下方还会出现相应示例、
注:注解与请求类型的配合使用可参考下面文章
边栏推荐
- Hong Kong stocks will welcome the "best ten yuan store". Can famous creative products break through through the IPO?
- 【数字IC验证快速入门】2、通过一个SoC项目实例,了解SoC的架构,初探数字系统设计流程
- 走入并行的世界
- Debezium series: record the messages parsed by debezium and the solutions after the MariaDB database deletes multiple temporary tables
- 无卷积骨干网络:金字塔Transformer,提升目标检测/分割等任务精度(附源代码)...
- 解决php无法将string转换为json的办法
- Zero cloud new UI design
- sun.misc.BASE64Encoder报错解决方法[通俗易懂]
- mongodb基操的练习
- 【数字IC验证快速入门】9、Verilog RTL设计必会的有限状态机(FSM)
猜你喜欢
Unity编辑器扩展 UI控件篇
关于BRAM IP复位的优先级
Autumn byte interviewer asked you any questions? In fact, you have stepped on thunder
leetcode刷题:二叉树17(从中序与后序遍历序列构造二叉树)
leetcode刷题:二叉树12(二叉树的所有路径)
Unity editor extended UI control
微信小程序正则表达式提取链接
解决Thinkphp框架应用目录下数据库配置信息修改后依然按默认方式连接
How to select the Block Editor? Impression notes verse, notation, flowus
Parler de threadlocal insecurerandom
随机推荐
leetcode刷题:二叉树14(左叶子之和)
Process file and directory names
信息学奥赛一本通 1338:【例3-3】医院设置 | 洛谷 P1364 医院设置
Guidelines for application of Shenzhen green and low carbon industry support plan in 2023
B站UP搭建世界首个纯红石神经网络、基于深度学习动作识别的色情检测、陈天奇《机器学编译MLC》课程进展、AI前沿论文 | ShowMeAI资讯日报 #07.05
Leetcode skimming: binary tree 17 (construct binary tree from middle order and post order traversal sequence)
Is it safe for Galaxy Securities to open an account online?
.Net分布式事务及落地解决方案
js实现禁止网页缩放(Ctrl+鼠标、+、-缩放有效亲测)
【数字IC验证快速入门】9、Verilog RTL设计必会的有限状态机(FSM)
Build your own website (16)
浅浅的谈一下ThreadLocalInsecureRandom
Four methods of random number generation | random | math | threadlocalrandom | securityrandom
js方法传Long类型id值时会出现精确损失
nprogress插件 进度条
1:引文;
2020 CCPC 威海 - A. Golden Spirit(思维),D. ABC Conjecture(大数分解 / 思维)
Wechat applet regular expression extraction link
MySql的root密码忘记该怎么找回
A solution to PHP's inability to convert strings into JSON