Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy SpringCloud根据请求动态地从文件中约定HTTP输出正文_Groovy_Spring Cloud Contract - Fatal编程技术网

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扩展。此外,如果该文件包含胡子模板,那么它可能无论如何都会工作。你得去看看谢谢。我们(!!)非常感谢这些实时回复:)