0

我在 Pact 上读到过,消费者是发起请求的人。我有一个服务(我们称之为 A),用于绘制图片,然后将其提交(通过 POST)到一个服务(我们称之为 B),该服务将处理这些输入并生成相册。

我的问题是:如果服务 B 是知道应该接收哪种类型的输入和格式以创建专辑的专家,那么服务 A 怎么会是消费者,因此将是编写合同的人呢?不应该是服务 B 指定应该接收什么样的数据?

4

1 回答 1

0

来自[1]:

向另一个组件(服务提供者)发起 HTTP 请求的组件。请注意,这并不取决于数据流动的方式——无论是 GET 还是 PUT/POST/PATCH,Consumer 都是 HTTP 请求的发起者。

但我认为您的问题实际上是在询问消费者驱动的合同测试[2]。您将谁在构建服务与对其存在要求的专业知识/理解混为一谈。消费者知道它需要从服务中得到什么,而提供者知道如何实现它。

消费者驱动的合约颠倒了典型的 API 设计过程,即首先创建 API,然后消费者来使用它。首先,消费者指定它需要什么,将期望发布为合同,然后提供者实施它。

Pact 一般采用这种模式,但不是绝对必要的(即Provider API 可以提前存在)。

[1] https://docs.pact.io/documentation/how_does_pact_work.html
[2] https://martinfowler.com/articles/consumerDrivenContracts.html

于 2017-03-07T03:06:08.373 回答