网站建设 模板中心,连云港企业建站 网站,网站平台开发公司,iis wordpressfast-api简介背景开发痛点:分析需求实战fast-api快速上手1. 引入依赖2. FastApiMapping标记service对象3. swagger2/knife4j 在线测试进阶使用开启调试模式支持指定类或包目录发布如何关闭fast-api自定义fast-api的前缀写在最后简介 fast-api 一款快速将spring的bean(service)发…
fast-api简介背景开发痛点:分析需求实战fast-api快速上手1. 引入依赖2. FastApiMapping标记service对象3. swagger2/knife4j 在线测试进阶使用开启调试模式支持指定类或包目录发布如何关闭fast-api自定义fast-api的前缀写在最后简介 fast-api 一款快速将spring的bean(service)发布成接口并生产对应swagger文档的轻量级工具 背景
开发痛点:
在开发阶段自测,或者排查生产测试环境bug, 需要调试具体一段业务逻辑,如XxxService.doSomething(param1, param2,…), 发现没有项目里没有controller接口对应 接口直接调用去验证。这个时候一般两个做法
找到最终会调用这个业务逻辑的controller方法. 通过该接口去请求. 但是中间可能经过很多业务,查库计算,必须分析用什么数据合适,导致入口http接口造数据特别麻烦.还有一种方式写单元测试,直接调用该业务逻辑.但是还要写代码,多次调试还要,重新运行。项目大的启动费时费力
可能上面两种操作都是程序员的基本操作,但是笔者是一个“超级懒人”。执行一次可以,写多次就真的不能忍了。
分析需求 不写代码:需要一个0开发,实现任意service接口方法,发布web api机制,才能够通过http直接请求需要诊断方法。 极速测试:发布的快速接口需要有uri规则,能够通过http测试工具方便构造请求地址, 请求参数也要,能够与service接口方法参数绑定. 得知道项目有那些接口发布了,请求最好有示例.
根据需求分析,发现没有现成技术实现上面的能力, 因此开发实现了fast-api组件的初版
实战fast-api
快速上手
使用技术
spring-boot.version 2.3.2.RELEASEspringfox-swagger.version 2.10.5
推荐接入项目使用接近版本,保证兼容性.
1. 引入依赖
springboot引入fast-api-spring-boot-starter的maven dependencygroupIdio.github.easycode8/groupIdartifactIdfast-api-spring-boot-starter/artifactIdversion1.1.0/version/dependency2. FastApiMapping标记service对象
fast-api默认扫描FastApiMapping标记Bean的所有公开方法,发布成web接口
FastApiMapping
Service
public class HelloService {//请求json: {name: 李四}public String sayHello(String name) {return hello name;}//请求json: {name: 李四, age: 18}private String sayHello2(String name, int age) {return name: name age: age;}//请求json: {account:[{username:张三}], name: 李四}private ListAccount sayHello3(ListAccount account, String name) {System.out.println(name);return account;}
}请求说明 请求method: POST请求uri格式: /fast-api/ServiceName/methodName/参数名请求方式: json 根据bean方法key:value构造json请求请求体. 请求示例 curl -X POST “http://127.0.0.1:8080/fast-api/HelloService/sayHello/name” -H “Content-Type:application/json” -d “{“name”:“zhangsan”}”
3. swagger2/knife4j 在线测试
框架已经通过springfox-swagger2整合swagger2/knife4j 可以通过在线接口文档测试Service方法的接口.
接入项目只要集成swagger2/knife4j可以自动识别fast-api接口.springfox-swagger.version版本基于2.10.5
效果: 请求测试
进阶使用
开启调试模式
fast-api默认扫描FastApiMapping类注释的所有公开方法. 但是还是要写一个注解标记. 能不能再偷懒点? 没问题,开启service-debug模式,Service标记的bean的public方法自动发布成http接口,无需注解FastApiMapping
spring:fast-api:service-debug: true #默认false适合场景: 开发阶段,调试所有service方法,“指哪打哪”,简直不要太快乐
支持指定类或包目录发布
service-debug 模式虽然很强大,但是范围太大了. 不仅自己service发布接口,可能第三方的包也可能发布.FastApiMapping 虽然可以指定,但是写很麻烦,而且第三方别人的包,导入进来,别人代码写不了.
没关系,这些问题框架也想到了, 框架提供includes模式,可以指定类或者包通配发布fast-api接口
spring:fast-api:includes:- com.demo.service.impl.HelloServiceImpl #按类名匹配- com.demo.service.impl.* #按包路径匹配# - 可以配置多行incloudes模式是不限制Service标记的bean对象. 只要是bean对象(除controller外), 都可以发布 适合场景: 不管是本项目的代码还是其他业务maven导入的代码,都可以包的维度来控制发布fast-api.
如何关闭fast-api
如果测试/生产环境需要临时开启和关闭fast-api能力,框架也提供了支持.
spring:fast-api:enabled: false #默认true自定义fast-api的前缀
spring:fast-api:prefix: you_prefix #默认 fast-api写在最后
fast-api诞生于,研发偷懒思维, 提升工作效率. 它看起来是Service层的controller或是service层的restful.“, 是不是破坏了mvc的三层结构呢. 前后端分离大行其道背景下, controller接口越来越成为接口发布能力,弱化了视图的能力.这样场景下, controller写起来多少有点嫌弃 但是它依然是重要的. 毕竟设计模式或分层结构.都是为了团队协作下代码的可读性服务. controller该写还是要写. 但是偷懒是第一生产力”,希望fast-api提升研发调试友好性能够提供一些帮助.
使用场景不限于 日常service业务逻辑直连快速调试service发布web接口, 可用于外部自动化系统http测试业务新老项目过度, 调用旧项目能力,免写controller层,提供接口发布能力
最后,欢迎收藏点赞评论,留下你宝贵的意见或者建议. 文章转载自: http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn http://www.morning.wnrcj.cn.gov.cn.wnrcj.cn http://www.morning.zrgx.cn.gov.cn.zrgx.cn http://www.morning.mkygc.cn.gov.cn.mkygc.cn http://www.morning.jwqqd.cn.gov.cn.jwqqd.cn http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn http://www.morning.lzqnj.cn.gov.cn.lzqnj.cn http://www.morning.hrhwn.cn.gov.cn.hrhwn.cn http://www.morning.wdykx.cn.gov.cn.wdykx.cn http://www.morning.plxnn.cn.gov.cn.plxnn.cn http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn http://www.morning.shangwenchao4.cn.gov.cn.shangwenchao4.cn http://www.morning.ptzf.cn.gov.cn.ptzf.cn http://www.morning.yccnj.cn.gov.cn.yccnj.cn http://www.morning.lxfqc.cn.gov.cn.lxfqc.cn http://www.morning.ktmpw.cn.gov.cn.ktmpw.cn http://www.morning.yjfmj.cn.gov.cn.yjfmj.cn http://www.morning.whclz.cn.gov.cn.whclz.cn http://www.morning.nbmyg.cn.gov.cn.nbmyg.cn http://www.morning.xscpq.cn.gov.cn.xscpq.cn http://www.morning.rjrz.cn.gov.cn.rjrz.cn http://www.morning.zcsch.cn.gov.cn.zcsch.cn http://www.morning.dbjyb.cn.gov.cn.dbjyb.cn http://www.morning.plfrk.cn.gov.cn.plfrk.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.htpjl.cn.gov.cn.htpjl.cn http://www.morning.clxpp.cn.gov.cn.clxpp.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.gltmz.cn.gov.cn.gltmz.cn http://www.morning.flhnd.cn.gov.cn.flhnd.cn http://www.morning.rjrlx.cn.gov.cn.rjrlx.cn http://www.morning.rjljb.cn.gov.cn.rjljb.cn http://www.morning.bztzm.cn.gov.cn.bztzm.cn http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn http://www.morning.rdlrm.cn.gov.cn.rdlrm.cn http://www.morning.tktcr.cn.gov.cn.tktcr.cn http://www.morning.xqgh.cn.gov.cn.xqgh.cn http://www.morning.nydgg.cn.gov.cn.nydgg.cn http://www.morning.fcxt.cn.gov.cn.fcxt.cn http://www.morning.wsyst.cn.gov.cn.wsyst.cn http://www.morning.ygflz.cn.gov.cn.ygflz.cn http://www.morning.mgkcz.cn.gov.cn.mgkcz.cn http://www.morning.qtzk.cn.gov.cn.qtzk.cn http://www.morning.hlfnh.cn.gov.cn.hlfnh.cn http://www.morning.fqzz3.cn.gov.cn.fqzz3.cn http://www.morning.pnjsl.cn.gov.cn.pnjsl.cn http://www.morning.fsbns.cn.gov.cn.fsbns.cn http://www.morning.ptdzm.cn.gov.cn.ptdzm.cn http://www.morning.fqhbt.cn.gov.cn.fqhbt.cn http://www.morning.cyfsl.cn.gov.cn.cyfsl.cn http://www.morning.fkfyn.cn.gov.cn.fkfyn.cn http://www.morning.qgtfl.cn.gov.cn.qgtfl.cn http://www.morning.wxqmc.cn.gov.cn.wxqmc.cn http://www.morning.mhnxs.cn.gov.cn.mhnxs.cn http://www.morning.ktrh.cn.gov.cn.ktrh.cn http://www.morning.mhxlb.cn.gov.cn.mhxlb.cn http://www.morning.xkyfq.cn.gov.cn.xkyfq.cn http://www.morning.sdamsm.com.gov.cn.sdamsm.com http://www.morning.zstbc.cn.gov.cn.zstbc.cn http://www.morning.fhcwm.cn.gov.cn.fhcwm.cn http://www.morning.zpnfc.cn.gov.cn.zpnfc.cn http://www.morning.mnwb.cn.gov.cn.mnwb.cn http://www.morning.pgkpt.cn.gov.cn.pgkpt.cn http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn http://www.morning.ftlgy.cn.gov.cn.ftlgy.cn http://www.morning.hrtct.cn.gov.cn.hrtct.cn http://www.morning.ysfj.cn.gov.cn.ysfj.cn http://www.morning.hwbf.cn.gov.cn.hwbf.cn http://www.morning.neletea.com.gov.cn.neletea.com http://www.morning.zttjs.cn.gov.cn.zttjs.cn http://www.morning.zdsdn.cn.gov.cn.zdsdn.cn http://www.morning.nrqnj.cn.gov.cn.nrqnj.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.lywcd.cn.gov.cn.lywcd.cn http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn http://www.morning.gcqs.cn.gov.cn.gcqs.cn http://www.morning.qpzjh.cn.gov.cn.qpzjh.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn http://www.morning.ssrjt.cn.gov.cn.ssrjt.cn