跳到主要内容

公共 API 选择

总之,在选择公共 API、API 网关或 BFF(前端后端)网关的工具时,我更喜欢 GraphQL,因为它具有尾随结果、批处理嵌套查询、性能追踪和显式缓存等功能。

JSON RPCGraphQLRESTgRPC
用例以太坊Github V2、Airbnb、Facebook BFF / API 网关Swagger高性能、谷歌、内部端点
单一端点
类型系统✅,与 JSON 一样弱
无 uint64

无 uint64
✅ w/ Swagger
无 uint64

有 uint64
定制结果
批处理嵌套查询
版本控制模式扩展是,使用 v1/v2 路由protobuf 中的字段编号
错误处理结构化结构化HTTP 状态码结构化
跨平台
游乐场 UIGraphQL BinSwagger
性能追踪?Apollo 插件??
缓存无或 HTTP 缓存控制Apollo 插件HTTP 缓存控制尚未原生支持,但仍可使用 HTTP 缓存控制
问题缺乏社区支持和工具链 Barrister IDL42.51 kb 客户端包大小多个端点的非结构化,便携性差。Grpc-web 开发进行中,140kb JS 包。兼容性问题:并非所有地方都支持 HTTP2 和 grpc 依赖