Protobuf DSL 实现 OAS-ApiHug101

  🤗 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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApiHug

God Bless U

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值