REST API 开发 - 什么是契约优先

本文将介绍 REST API 开发中的契约优先设计理念,并提供实践建议和最佳实践。

用 Apifox,节省研发团队的每一分钟

REST API 开发 - 什么是契约优先

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

本文将探讨如何基于契约的方法来开发 REST API。 在 API 先行的策略中,基于 API 优先的服务契约管理成为微服务架构的重要原则之一。我们可以将 API 先行视为与商业契约类似,一旦需要与其他各方开展重要的业务,我们需要首先签订契约,或是双方达成某种协议。

文章概览

  • 什么是基于契约优先的 REST API 开发?
  • 契约优先方法的优点是什么?
  • 契约优先方法的缺点是什么?
  • 什么时候使用契约优先方法?

Web 服务的概念

Web 服务有两种类型:REST Web 服务 和 SOAP Web 服务。它们的共同点是都需要以下服务方:

  • 服务提供者
  • 服务消费者

消费者想要从服务提供者获取资源的详情,就需要签订合同,这种合同一般约定好如下内容:

  • 服务的输入和输出分别是什么?
  • 该服务在哪个 URL 可用?
  • 如何发送授权?

契约优先法

使用 Contract First 方法,需要首先定义合同,然后注入服务。举例如下:

WSDL

Web 服务定义语言 WSDL 的用例:

WSDL 通常与 SOAP/XML 网络服务一起使用:

合同约定是什么意思?

约定合同就代表定义了 WSDL,通过这种方式可以与我们的消费者共享信息。这些都发生在我们实施服务并提供消息可用之前。 合同会告知消费者请求和响应的交换方式。合同签订后,服务提供商可以根据合同提供服务,服务消费者也可以开发应用程序供其使用。

合同优先方法的好处

团队并行开发

在编码基于合同的契约下,服务提供商和服务消费者都清楚地了解沟通的方式和细节,这样两者就可以同时进行开发。

团队联调模拟

因为编码是基于合同的,服务生产者和服务消费者都会清楚彼此的期望。因此,如果由于开发节奏不同而无法进行联调,也可以使用软件来模拟对方基于合约的行为。

跨平台兼容性

由于服务的参数仅取决于合同,因此用于开发服务的实际软件结构并不重要。服务提供者和服务消费者可以使用不同的技术。

允许使用重用模式

用于定义服务契约的模式在 WSDL 中得到了很好的定义。因此,如果部分服务在其他服务中重复,那么相应的模式也可以重用。

合同优先方法的缺点

需要额外的启动成本

这些额外成本的消耗,大部分都是因为服务协议的原因。我们可以通过确保合同定义,以及避免经常更改,来减少或控制这部分的支出。

合同续签和交换机制

在服务生命周期内,如果续签合同,会影响所有其他相关方。因此,必须有一种适当的机制来将更改传播到不同的消费者。

契约优先最佳实践

在本文中,我们讨论了 Web 服务上下文中的契约优先方法。契约优先的要点就在团队要事先约定好接口的设计,再依此进行开发,以提高后期联调的成功概率, Apifox 提供了非常适合契约优先团队的 API 工具,帮助你更好地在团队内部施行契约优先。

Apifox 是一体化 API 协作平台,可以实现 API 文档、API 调试、API Mock、 API 自动化测试,是更先进的 API 设计/开发/测试工具。Apifox 提供了一种全面的 API 管理解决方案。使用 Apifox ,你可以在一个统一的平台上设计、调试、测试以及协作你的 API,消除了在不同工具之间切换和数据不一致的问题。 简化了你的 API 工作流,并确保了前端、后端和测试人员之间的高效协作。

Apifox 界面

其中文档模式就是适用于契约优先的团队,调试模式适用于代码优先的团队。基于 Apifox 你可以非常轻松地实践契约优先。

基于 Apifox 轻松开发 REST API

  1. 前端(或后端)在 Apifox 上定好接口文档初稿。
  2. 前后端一起评审、完善接口文档,定好接口用例。
  3. 前端使用系统根据接口文档自动生成的 Mock 数据进入开发,无需手写 mock 规则。
  4. 后端使用接口用例 调试开发中接口,只要所有接口用例调试通过,接口就开发完成了。如开发过中接口有变化,调试的时候就自动更新了文档,零成本的保障了接口维护的及时性。
  5. 后端每次调试完一个功能就保存为一个接口用例。
  6. 测试人员直接使用接口用例测试接口。
  7. 所有接口开发完成后,测试人员(也可以是后端)使用集合测试功能进行多接口集成测试,完整测试整个接口调用流程。
  8. 前后端都开发完,前端从 Mock 数据切换到正式数据,联调通常都会非常顺利,因为前后端双方都完全遵守了接口定义的规范。

知识扩展:

了解更多 REST API 相关知识。