title | description |
---|---|
Protobuf DSL 实现 OAS |
使用 Proto Buffer 实现DSL, DSL 描述 OAS OpenAPI Specification |
- Protobuf 即Protocol Buffers,是Google公司开发的一种跨语言和平台的序列化数据结构的方式,包含GRPC
- The OpenAPI Specification 定义了一个标准、跟编程语言无关的 HTTP API接口描述 (defines a standard, programming language-agnostic interface description for HTTP APIs);
- 领域特定语言(domain-specific language)(DSL),是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。
借助 Protobuf 实现 DSL 用以定义 OpenAPI; WHY?
- 更易用: Protobuf 语法极简,长时间业界实践, OAS, 通用标准,简单易懂。
- 更结构化:严格于 json/yml 纯格式, 静态语法校验, 更结构化,更严谨,完善包分发体系。
- 更平滑:protoc 和各宿主语言之间的桥梁, 让设计和实现之间无缝平移。
当然这样的设想不是 Hope
首创, 已经有很多的先例在尝试这样的方式,定义和分享 Api, 比如; gRPC-Gateway 用以打通grpc 和 RESTful JSON API 之间的桥梁:
以及整个 google 系 API的 protobuf 定义 Google Open API Protos
- gRPC-Gateway ,gRPC-Gateway is a plugin of protoc. It reads a gRPC service definition and generates a reverse-proxy server which translates a RESTful JSON API into gRPC.
- Google Open API Protos ; public Google APIs that support both REST and gRPC protocols.
- The OpenAPI Specification
- Jetbrains Domain-Specific Languages
- ApiHug101-Bilibili
- ApiHug101-Youtube