Protobuf DSL 实现 OAS-ApiHug101

发布于:2024-04-09 ⋅ 阅读:(145) ⋅ 点赞:(0)

  🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

  1. GitHub - apihug/apihug.com: All abou the Apihug   
  2. apihug.com: 有爱,有温度,有质量,有信任
  3. ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace

使用 Proto Buffer 实现DSL, DSL 描述 OAS OpenAPI Specification
docs/handbook/003_protobuf_and_dsl_basic.md · dearxuecom/apihug.com - Gitee.com

DSL是“领域特定语言”(Domain-Specific Language)的缩写。它是一种专门针对特定领域问题而设计的编程语言或表达方式。与通用编程语言(如Java、Python等)不同,DSL通常专注于解决特定类型的问题或执行特定类型的任务,因此它的语法和功能集通常更加简洁和高效。

DSL可以是外部DSL,具有自己的语法和解析器,也可以是内部DSL,即在通用编程语言中定义的一组专用的库和API。通过使用DSL,开发者可以提高在特定领域的生产力,因为DSL提供了更加直观和表达性强的方式来描述问题和解决方案。

例如,在API设计领域,可以使用DSL来定义API的接口和行为,使得API的设计更加清晰和易于管理。在软件开发中,DSL可以用来描述用户界面、业务规则或数据模型等。

总的来说,DSL是一种强大的工具,它可以帮助开发者更加高效和精确地解决特定领域的问题。

定义

  1. Protobuf 即Protocol Buffers,是Google公司开发的一种跨语言和平台的序列化数据结构的方式,包含GRPC
  2. The OpenAPI Specification 定义了一个标准、跟编程语言无关的 HTTP API接口描述 (defines a standard, programming language-agnostic interface description for HTTP APIs);
  3. 领域特定语言(domain-specific language)(DSL),是一种旨在特定领域下的上下文的语言。这里的领域是指某种商业上的(例如银行业、保险业等)上下文,也可以指某种应用程序的(例如 Web 应用、数据库等)上下文。

目的

借助 Protobuf 实现 DSL 用以定义 OpenAPI; WHY?

  1. 更易用: Protobuf 语法极简,长时间业界实践, OAS, 通用标准,简单易懂。
  2. 更结构化:严格于 json/yml 纯格式, 静态语法校验, 更结构化,更严谨,完善包分发体系。
  3. 更平滑:protoc 和各宿主语言之间的桥梁, 让设计和实现之间无缝平移。

基石

当然这样的设想不是 Hope 首创, 已经有很多的先例在尝试这样的方式,定义和分享 Api, 比如; gRPC-Gateway 用以打通grpc 和 RESTful JSON API 之间的桥梁:

以及整个 google 系 API的 protobuf 定义 Google Open API Protos

参考

  1. 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.
  2. Google Open API Protos ; public Google APIs that support both REST and gRPC protocols.
  3. The OpenAPI Specification
  4. Jetbrains Domain-Specific Languages
  5. ApiHug101-Bilibili
  6. ApiHug101-Youtube

网站公告

今日签到

点亮在社区的每一天
去签到