fast-api 一款快速将spring的bean发布成接口并生产对应swagger文档调试的轻量级工具
创始人
2024-06-01 01:23:52
0

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接口造数据特别麻烦.
  • 还有一种方式写单元测试,直接调用该业务逻辑.但是还要写代码,多次调试还要,重新运行。项目大的启动费时费力

可能上面两种操作都是程序员的基本操作,但是笔者是一个“超级懒人”。执行一次可以,写多次就真的不能忍了。

分析需求

  1. 不写代码:需要一个"0"开发,实现任意service接口方法,发布web api机制,才能够通过http直接请求需要"诊断"方法。

  2. 极速测试:发布的快速接口需要有uri规则,能够通过http测试工具方便构造请求地址, 请求参数也要,能够与service接口方法参数绑定. 得知道项目有那些接口发布了,请求最好有示例.

根据需求分析,发现没有现成技术实现上面的能力, 因此开发实现了fast-api组件的初版

实战fast-api

快速上手

使用技术

  • spring-boot.version 2.3.2.RELEASE
  • springfox-swagger.version 2.10.5

推荐接入项目使用接近版本,保证兼容性.

1. 引入依赖

springboot引入fast-api-spring-boot-starter的maven

        io.github.easycode8fast-api-spring-boot-starter1.1.0

2. @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  List sayHello3(List 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层,提供接口发布能力

最后,欢迎收藏点赞评论,留下你宝贵的意见或者建议.

相关内容

热门资讯

年会老板感谢员工精彩致辞 年会老板感谢员工精彩致辞(通用16篇)  在日复一日的学习、工作或生活中,大家都用到过致辞吧,致辞具...
六一文艺汇演主持词 六一文艺汇演主持词(通用10篇)  主持词要根据活动对象的不同去设置不同的主持词。在人们积极参与各种...
文艺晚会主持稿   男:今晚,我们再次欢聚一堂  女:满载丰收的喜悦,用歌舞表达内心最真挚的情感  男:朋友们,古往...
最新公司年会主持词 最新公司年会主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。在当下的社会中,主持词的实用...
毕业晚会主持词结束语 毕业晚会主持词结束语  以下是由应届毕业生网PQ小编为大家整理出来的2016年毕业晚会主持词结束语,...
启动会主持词 启动会主持词  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在现在的社会生活中,主持人...
七十大寿祝寿主持词最新 七十大寿祝寿主持词最新  根据活动对象的不同,需要设置不同的主持词。在当下的中国社会,主持词的实用频...
十一国庆节晚会主持词 十一国庆节晚会主持词  在国庆节需要举办相关的晚会,那么晚会的主持词应该怎么写呢?下面是小编分享给大...
中学秋季开学典礼主持词串词 中学秋季开学典礼主持词串词  暑假如同一部赏心悦目的电影,看完了,请你把美好的记忆珍藏在心中,开学日...
适合父亲节的歌曲 适合父亲节的歌曲适合父亲节的歌曲推荐Eric Clapton的.My Father's Eyes,很...
我们的节日端午主持稿 我们的节日端午主持稿(通用12篇)  在当下社会,很多地方都会使用到主持稿,主持稿具有语言过度自然、...
婚礼主持词开场白   第一篇:  尊敬的各位来宾,  很高兴接受一对新人的委托,主持今天这场爱情的盛典,我是主持人张 ...
幸福额度简介及台词 幸福额度简介及台词  《幸福额度》简介  《幸福额度》由陈正道执导,林志玲、陈坤、廖凡主演的爱情电影...
舞蹈大赛主持词 舞蹈大赛主持词集合七篇  利用在中国拥有几千年文化的诗词能够有效提高主持词的感染力。在人们积极参与各...
团代会闭幕词 团代会闭幕词精选3篇  今天,CN人才网小编给大家分享的是团代会闭幕词精选3篇,希望对大家有帮助。 ...
职工代表大会主持词 职工代表大会主持词  ×××××第二十一届四次职工代表大会  开幕式主持词  各位代表:  根据大会...
婚礼主持词(精选10篇) 婚礼主持词(精选10篇)  主持词的格式及写法  1.标题  一般情况下,只需写明“主持词”即可,也...
农村婚庆司仪主持词 农村婚庆司仪主持词  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。在现今人们越...
泰坦尼克号英文台词 泰坦尼克号英文台词  导语:泰坦尼克号以1912年泰坦尼克号邮轮在其处女启航时触礁冰山而沉没的事件为...
宋小宝的小品烤串台词 宋小宝的小品烤串台词  宋小宝是我国著名的喜剧演员,下面一起来欣赏宋小宝的小品烤串台词!欢迎阅读! ...