在多服务协作中,API接口的维护非常重要,对于平台型的业务来说更是核心需求。

一、API接口维护痛点

1、接口定义与文档不同步

我们在API接口实现和维护中,经常遇到的痛点就是文档与接口实现不一致的问题。这样的根因主要是接口代码定义与接口文档分开维护导致的,例如:

  • 接口代码定义在代码项目中,但是接口文档由另外的独立接口文档平台维护。费时费力的同时,容易引起两边不一致,增加协作成本。
  • 接口代码定义和接口文档都是在代码项目中维护,但是接口文档由独立的模块或者注释维护,也容易造成接口代码定义与文档不一致。

2、多种接口协议下,维护方式不统一

同时存在多种接口协议,例如:REST/gRPC/Thrift等,当接口协议不一致时,接口无法统一维护,维护成本极高。例如:针对REST协议,我们需要定义HTTP API,但是针对gRPC/Thrift协议接口时,我们又不得不学习不同的接口协议语法、规范、工具。同时,不同接口协议,不仅仅协议层发生改变,依赖的服务注册、controller层代码也会产生改变。

能否只采用一套统一且便捷的API定义方式,支持不同的接口协议?

3、没有统一、便捷的客户端生成机制

拿到HTTP接口定义后怎么做呢?自己写一个Client封装一遍再使用?

拿到gRPC/Thrift协议定义后怎么做呢?使用对应的工具生成对应Client SDK再使用?

没有一个工具能统一做好这一切吗?没有办法能将一切自动化吗?框架的目标不是让我们只专注业务逻辑吗?

二、API接口维护改进

1、统一化维护接口定义

2、屏除注释文档维护方式

3、抓大放小,专注核心痛点

4、采用业内标准,统一文档协议

5、支持多种协议的客户端SDK生成