提供者端处理不适用于请求正文
Provider side maching not work on request body
如果我在提供者的请求正文中添加任何内容或重命名或删除与合同不同的任何字段,那么提供者端匹配将不起作用。
例如,在合同文件请求正文中包含名称字段和相同的字段,如果我仅在请求中删除或重命名提供者的请求正文(不是响应),那么协议不会验证该字段。
我想在提供方确认请求正文上的匹配是否有效?
我可以在 pact 文件中看到请求正文的匹配规则,但它似乎不起作用。
将 Pact 合同不需要的新字段添加到提供商响应中会被忽略。
为什么会这样?契约遵循 Postel's Law。 响应中的意外元素不应给消费者带来问题。其他消费者可能有不同但重叠的需求,因此基于这些原因构建的提供商失败是有问题的。
根据我们的 docs,这意味着什么:
Be conservative in what you send - when the mock server in the consumer project compares the actual request with the expected request, the actual request body is not allowed to contain fields that are not defined in the expected request body. We don't want the situation where our real consumer is "leaking" data that we don't know about.
Be liberal in what you accept - when verifying a pact in the provider project, the response body and headers may contain fields that were not defined in the expectations, on the assumption that any extra field will be ignored by your consumer. This allows a provider to evolve without breaking existing consumers (unlike the bad old WSDL days).
第二点:
I want to confirm at provider side will the matching work on request body?
听起来好像可以。如果您更改数据类型或有意外的响应代码,它会正确识别重大更改。
如果您重命名消费者需要的字段,那么这听起来像是一个错误(就 Pact 功能而言是一个致命错误,所以我持怀疑态度)。
如果我在提供者的请求正文中添加任何内容或重命名或删除与合同不同的任何字段,那么提供者端匹配将不起作用。
例如,在合同文件请求正文中包含名称字段和相同的字段,如果我仅在请求中删除或重命名提供者的请求正文(不是响应),那么协议不会验证该字段。
我想在提供方确认请求正文上的匹配是否有效?
我可以在 pact 文件中看到请求正文的匹配规则,但它似乎不起作用。
将 Pact 合同不需要的新字段添加到提供商响应中会被忽略。
为什么会这样?契约遵循 Postel's Law。 响应中的意外元素不应给消费者带来问题。其他消费者可能有不同但重叠的需求,因此基于这些原因构建的提供商失败是有问题的。
根据我们的 docs,这意味着什么:
Be conservative in what you send - when the mock server in the consumer project compares the actual request with the expected request, the actual request body is not allowed to contain fields that are not defined in the expected request body. We don't want the situation where our real consumer is "leaking" data that we don't know about.
Be liberal in what you accept - when verifying a pact in the provider project, the response body and headers may contain fields that were not defined in the expectations, on the assumption that any extra field will be ignored by your consumer. This allows a provider to evolve without breaking existing consumers (unlike the bad old WSDL days).
第二点:
I want to confirm at provider side will the matching work on request body?
听起来好像可以。如果您更改数据类型或有意外的响应代码,它会正确识别重大更改。
如果您重命名消费者需要的字段,那么这听起来像是一个错误(就 Pact 功能而言是一个致命错误,所以我持怀疑态度)。