我已经在Pact上看到,消费者是发起请求的人。我有一个服务(让我们称之为A)用于绘制图片,然后将其提交(通过POST)到服务(让我们称之为B),它将处理这些输入并生成相册。
我的问题是:如果服务B是知道哪种输入以及以哪种格式应该接收以创建专辑的专家,那么服务A如何成为消费者,因此也就是写作合同的人?不应该是服务B指定应该接收哪种数据吗?
答案 0 :(得分:0)
从[1]开始:
向另一个组件(服务提供者)发起HTTP请求的组件。请注意,这不依赖于数据流的方式 - 无论是GET还是PUT / POST / PATCH,Consumer都是HTTP请求的发起者。
但我认为你的问题实际上是在询问消费者驱动的合同测试 [2]。您将构建服务的人与专业知识/对其存在要求的理解混为一谈。消费者知道服务需要什么,并且提供者知道如何实现它。
消费者驱动的合同颠覆了首先创建API的典型API设计流程,然后消费者开始使用它。首先,消费者指定它需要什么,将期望作为合同发布,然后提供者实现它。
Pact通常采用这种模式,但并不是绝对必要的(即提供者API可以提前存在)。
[1] https://docs.pact.io/documentation/how_does_pact_work.html
[2] https://martinfowler.com/articles/consumerDrivenContracts.html