设计 Web 服务 API 可能是一种棘手的艺术

Buy Database Forum Highlights Big Data’s Global Impact
Post Reply
rumiseoexpate5
Posts: 57
Joined: Wed Dec 11, 2024 3:55 am

设计 Web 服务 API 可能是一种棘手的艺术

Post by rumiseoexpate5 »

形式。API 是与业务领域交互所必需的虚拟剧本,更重要的是,它们是将服务所有者与消费者绑定在一起的契约。因此,尽早进行正确的设计是 Squarespace 服务工程的重要组成部分。

与此同时,支持 API 交互的代码中充斥着样板代码。在我们的 Java 服务堆栈中,通常有三个组件构成我们服务的管道:

Jersey 或 Spring MVC 映射的 RESTful 资源
JSON 映射的传输模型
具有异步功能的网络客户端/SDK
随着服务数量的增长,我们越来越清楚地 萨尔瓦多 whatsapp 号码数据 5 万 认识到,我们需要将精力集中在 API 规范及其底层业务逻辑上,而不必为样板管道、输入验证、容错和客户端隔离而烦恼。这就是为什么我们基于众所周知的规范(开放 API 规范)引入并实施了自己的代码生成框架。

开放 API(以前称为 Swagger)
Swagger已经存在了一段时间,并因其生成的交互式文档而闻名。虽然该文档是一项很棒的功能,但真正的强大之处在于独立于平台的规范,它可用作描述 API 的简单而一致的方式。通过利用灵活的规范和供应商扩展等功能,我们能够创建自己的代码生成框架,以捕获我们首选的模式和代码样式。它还为我们的工程师提供了一种简单的方法,可以立即透明地利用定义我们服务支柱的抽象。

该规范还提供了额外的好处,即能够以各种语言(Go、Python、Ruby 等)生成客户端 SDK。

Image

Swagger 不是已经有 Java codegen 了吗?
是的,确实如此。但是,Swagger Codegen 生成的代码并不能完全满足我们的需求。在我们的组织中,我们已基于 Reactive Java 为我们的 Java 堆栈标准化了服务客户端。服务客户端封装了我们认为通过网络与服务通信时必需的内容。这些必需品包括通过断路器和隔板实现的容错能力、使用我们的 Consul 集群进行的服务发现、标准化指标、标准化日志记录和分布式跟踪。

我们还整合了许多开放 API 规范验证属性,并自动在我们的代码库中应用输入验证。我们的代码生成通过 Gradle 无缝集成到我们的 CI/CD 管道中。生成的代码无需签入我们的 Git 存储库。
Post Reply