伙伴匹配系统03
1.计划
1.Java后端整合Swagger+Knife4j接口文档
2.存量用户信息导入以及同步
3.前后端联调:搜索页面,用户信息页,用户信息修改页
4.标签内容整理,部分细节优化
2.开始
1.Java后端整合Swagger+Knife4j接口文档
背景提要:
什么是接口文档?
写接口信息的文档,每条接口包括:
请求参数
响应参数
错误码
接口地址
接口名称
请求类型
请求格式
备注
谁用接口文档?
一般是后端或者负责人来提供,前端或后端都要使用
为什么需要接口文档?
有个书面内容(背书或者归档),便于大家参考或者查阅,便于沉淀和维护,拒绝口口相传接口文档便于前端和后端开发对接,前后端联调的介质。后端=>接口文档<=前端好的接口文档支持在线测试,可以做为工具,提高我们的开发测试效率
如何做接口文档?
手写(腾讯文档,markdown笔记)自动化接口文档接口生成:Swagger,Postman(测试接口管理),Apifox,Apipost,eolink
Swagger原理
1.引入依赖(Swagger 或 Knife4j:/knife4j/documentation/get_start.html)
2.自定义Swagger配置类
3.定义需要生成接口文档代码的位置(Controller),线上环境不能把接口全部暴露出去,可以在SwaggerConfig中加上@Profile({“dev”,“test”})限定配置仅在部分环境中开启
4.踩坑:springboot>=2.6,需要添加如下配置
springmvc:pathmatch:matching-strategy: ant_path_matcher
5.可以通过在 controller 方法上添加 @Api、@ApiImplicitParam(name = “name”,value = “姓名”,required = true) @ApiOperation(value = “向客人问好”) 等注解来自定义生成的接口描述信息
todo隐藏接口
2.存量用户信息导入以及同步
把所有星球用户的信息导入
把写了自我介绍的同学的标签信息导入
3.看上了网页信息,怎么抓到?
分析原网站是怎么获取这些数据的?哪个接口?按 F 12 打开控制台,查看网络请求,复制 curl 代码便于查看和执行:
curl "/v2/hashtags/28855145112241/topics?count=20" ^-H "authority: " ^-H "accept: application/json, text/plain, */*" ^-H "accept-language: zh-CN,zh;q=0.9,en;q=0.8" ^-H "cache-control: no-cache" ^-H "origin: " ^-H "pragma: no-cache" ^-H "referer: /" ^-H "sec-ch-ua: ^\^"Not/A)Brand^\^";v=^\^"99^\^", ^\^"Google Chrome^\^";v=^\^"115^\^", ^\^"Chromium^\^";v=^\^"115^\^"" ^-H "sec-ch-ua-mobile: ?0" ^-H "sec-ch-ua-platform: ^\^"Windows^\^"" ^-H "sec-fetch-dest: empty" ^-H "sec-fetch-mode: cors" ^-H "sec-fetch-site: same-site" ^
EasyExcel
两种读对象的方式:
确定表头:建立对象,和表头形成映射关系不确定表头:每一行数据映射为 Map<String, Object>
两种读取模式:
监听器:先创建监听器、在读取文件时绑定监听器。单独抽离处理逻辑,代码清晰易于维护;一条一条处理,适用于数据量大的场景。同步读:无需创建监听器,一次性获取完整数据。方便简单,但是数据量大时会有等待时常,也可能内存溢出。
3.实践
1.导入knife4j-spring-boot-starter包
<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>2.0.7</version></dependency>
上图:
2.创建Swagger配置依赖,代码如下:
package com.hyx.getfriend.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.EnableSwagger2WebMvc;/*** 自定义 Swagger 接口文档的配置**/@Configuration@EnableSwagger2WebMvc//@Profile({"dev", "test"})public class SwaggerConfig {@Bean(value = "defaultApi2")public Docket defaultApi2() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()// 这里一定要标注你控制器的位置.apis(RequestHandlerSelectors.basePackage("com.hyx.getfriend.controller")).paths(PathSelectors.any()).build();}/*** api 信息* @return*/private ApiInfo apiInfo() {return new ApiInfoBuilder().title("伙伴匹配").description("伙伴匹配接口文档").termsOfServiceUrl("/qq_52642109").contact(new Contact("coderhyx","/qq_52642109","xxx@")).version("1.0").build();}}
上图:
启动项目
访问接口文档地址,发现接口文档已生成
http://localhost:8080/api/doc.html
当然,我们也可以在线做调试,看看接口是否能成功响应并返回数据
这样,我们的接口文档就做好啦,接口文档还有很多功能,这里就不多演示啦。
有时候,我们不希望我们的接口文档暴露在外,那么我们如何隐藏接口文档呢。
添加配置
这样,我们的接口文档就成功隐藏了
如果觉得《知识星球-伙伴匹配系统笔记3》对你有帮助,请点赞、收藏,并留下你的观点哦!