【发布时间】:2020-06-23 10:05:42
【问题描述】:
如何通过通用 api 使用 Spring Cloud 合约。我在询问有关生产者服务的 REST 合同。所以考虑一个例子。我有一项服务,它允许将用户数据以不同格式存储到数据库中,并充当服务和数据库之间的代理。它具有所有消费者所需的参数,以及依赖于消费者的参数。
class Request<T> {
Long requestId;
String documentName;
T documentContent;
}
它有两个消费者。
消费者1:
{
"requestId": 1,
"documentName": "login-events",
"documentContent": {
"userId": 2,
"sessionId": 3
}
}
消费者2:
{
"requestId": 1,
"documentName": "user-details",
"documentContent": {
"userId": 2,
"name": "Levi Strauss",
"age": 11
}
}
如您所见,documentContent 取决于消费者。在我想编写这样的合同时,它将在消费者端检查该字段的内容并在生产者端忽略它。像
"documentContent": ["age": $(consumer(11))] //will produce .field(['age']").isEqualTo(11)
和
"documentContent": ["age": $(consumer(11), producer(optional(anInteger())))] //will require field presence
没用。当然,我可以写"documentContent": [] 甚至忽略合同中的这个字段,但我希望它们像 Rest Api 文档一样工作。有人知道如何解决这个问题吗?
【问题讨论】:
标签: spring spring-cloud-contract contract