Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/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
Spring cloud spring云网关中使用freemarker的请求-响应转换_Spring Cloud_Freemarker_Json Schema Validator_Spring Cloud Gateway - Fatal编程技术网

Spring cloud spring云网关中使用freemarker的请求-响应转换

Spring cloud spring云网关中使用freemarker的请求-响应转换,spring-cloud,freemarker,json-schema-validator,spring-cloud-gateway,Spring Cloud,Freemarker,Json Schema Validator,Spring Cloud Gateway,我正在使用SpringCloudGatewayHoxton.M1版本来实现一个API网关。我有以下两个spring boot应用程序- 客户端路由器应用程序包装器应用程序下游应用程序 路由器应用程序-此应用程序具有spring云网关。application.yml中的所有路由都指向包装器应用程序中的公共REST控制器端点,方法是将请求头属性“apidempid”传递给diff b/w diff api调用。下面是一个示例路线条目 - id: milestone uri: http:/

我正在使用SpringCloudGatewayHoxton.M1版本来实现一个API网关。我有以下两个spring boot应用程序-

客户端路由器应用程序包装器应用程序下游应用程序

路由器应用程序-此应用程序具有spring云网关。application.yml中的所有路由都指向包装器应用程序中的公共REST控制器端点,方法是将请求头属性“apidempid”传递给diff b/w diff api调用。下面是一个示例路线条目

  - id: milestone
    uri: http://localhost:5001
    predicates:
    - Path=/track/milestone
    - Method=POST
    filters:
    - RewritePath=/track/milestone,/gateway/api/internal/process
    - AddRequestHeader=apiendpointid,retailmilestone
    - AddRequestHeader=appid,retail
    - SecureHeaders
包装器应用程序-这是一个具有Rest控制器的spring引导应用程序。控制器方法执行以下操作-

  • 根据“apiendpointid”请求标识JSON模式文件 标题属性并应用JSON模式验证。在中拒绝请求 通过向路由器返回400响应导致架构验证失败的案例 应用程序

  • 标识freemarker请求转换文件,该文件基于“apiendpointid”请求头属性,并将传入请求转换为下游预期格式

  • 向下游发送请求
  • 使用freemarker响应模板再次将响应从下游转换为预期格式
  • 将响应发送回路由器应用程序
  • 这很好,但从路由器到包装器之间还有一个额外的http“跃点”。我们还没有活着;因此,不太确定这是否会成为性能问题


    目前包装器不是以反应方式构建的。此外,该团队在反应式编程方面也没有太多的专业知识。是否有任何生产实现是以这种方式构建的(即在中间有这个额外的包装层/应用程序),或者将所有包装功能集成到路由器应用程序本身中更好?如果是,您能告诉我一些在spring cloud gateway本身中进行请求/响应转换/模式验证的示例吗?

    添加@Spencer吗有人能告诉我一个使用freemarker或任何其他方法进行请求/响应json转换的工作示例吗云网关?您是否找到了解决方案?@SJ.Jafari我没有找到任何解决方案;因此,我们继续进行上述设计。我们有“modfiyRequestBody/modfiyResponseBody”SCG中的过滤器,但不太确定如何以反应式的方式将所有包装器逻辑整合到其中。添加@Spencer,有人能告诉我一个工作示例,其中使用freemarker或任何其他方法进行的请求/响应json转换以前使用spring cloud gateway完成过吗?您找到了任何解决方法吗this?@SJ.Jafari我没有找到任何解决方案;因此,我们继续进行上述设计。我们在SCG中有“modfiyRequestBody/modfiyResponseBody”过滤器,但不太确定如何以反应式方式将所有包装器逻辑合并到这个过滤器中。