在多服务协作中,API接口的维护非常重要,对于平台型的业务来说更是核心需求。
一、API接口维护痛点
1、接口定义与文档不同步
我们在API接口实现和维护中,经常遇到的痛点就是文档与接口实现不一致的问题。这样的根因主要是接口代码定义与接口文档分开维护导致的,例如:
- 接口代码定义在代码项目中,但是接口文档由另外的独立接口文档平台维护。费时费力的同时,容易引起两边不一致,增加协作成本。
- 接口代码定义和接口文档都是在代码项目中维护,但是接口文档由独立的模块或者注释维护,也容易造成接口代码定义与文档不一致。
2、多种接口协议下,维护方式不统一
同时存在多种接口协议,例如:REST/gRPC/Thrift
等,当接口协议不一致时,接口无法统一维护,维护成本极高。例如:针对REST
协议,我们需要定义HTTP API
,但是针对gRPC/Thrift
协议接口时,我们又不得不学习不同的接口协议语法、规范、工具。同时,不同接口协议,不仅仅协议层发生改变,依赖的服务注册、controller
层代码也会产生改变。
能否只采用一套统一且便捷的API定义方式,支持不同的接口协议?
3、没有统一、便捷的客户端生成机制
拿到HTTP
接口定义后怎么做呢?自己写一个Client
封装一遍再使用?
拿到gRPC/Thrift
协议定义后怎么做呢?使用对应的工具生成对应Client SDK
再使用?
没有一个工具能统一做好这一切吗?没有办法能将一切自动化吗?框架的目标不是让我们只专注业务逻辑吗?