Groovy SpringCloud根据请求动态地从文件中约定HTTP输出正文
如果能够从请求中动态获取响应文件名,那么为模拟服务器提供“测试数据”将是一种很好且灵活的方法。我想知道是否有人能找到某种解决方法来实现以下内容:Groovy SpringCloud根据请求动态地从文件中约定HTTP输出正文,groovy,spring-cloud-contract,Groovy,Spring Cloud Contract,如果能够从请求中动态获取响应文件名,那么为模拟服务器提供“测试数据”将是一种很好且灵活的方法。我想知道是否有人能找到某种解决方法来实现以下内容: import org.springframework.cloud.contract.spec.Contract Contract.make { request { url "/one/two/three/response" method GET() } response {
import org.springframework.cloud.contract.spec.Contract
Contract.make {
request {
url "/one/two/three/response"
method GET()
}
response {
status OK()
headers {
contentType applicationJson()
}
body ( file( '' + $(consumer(fromRequest().path(3)), producer("response")) + '.json'))
}
}
或者无法根据请求动态确定输出文件?不幸的是,您不能这样做。您必须手动创建主体,其部分应该引用
fromRequest
您可以从单独的json文件中引用请求,将值放入特定属性中。例如,在.json文件中,您可以执行以下操作
{
"foo": "{{{ request.path.[3] }}}"
}
然而,你的建议是行不通的。您不能动态创建或选择其他json文件。OK。这个特性可以通过Wiremock(单机版)实现,使用switch——全局响应模板+它需要映射的内容。我并没有尝试:SpringCloudContract是否有这个选项?然后,您可以使用http post加载该映射?您可以通过将手动创建的存根放入存根jar来实现同样的目的。然后,存根运行程序将其上载到已启动的wiremock。Sc合同可以注册额外的wiremock扩展。此外,如果该文件包含胡子模板,那么它可能无论如何都会工作。你得去看看谢谢。我们(!!)非常感谢这些实时回复:)