【问题标题】:spring boot rest versioned request and select controller dynamicallyspring boot rest 版本化请求并动态选择控制器
【发布时间】:2015-08-14 11:54:38
【问题描述】:

我们计划将版本控制应用于我们的 REST API。我们不想更改 URL,因此我们的想法是在 HTTP 标头中有一个 X-API-VERSION。当此标头值存在时,请求将被转发到正确的版本化休息控制器。

例如我们有两个用于同一资源的控制器,即人员资源

人员控制器
Person_Version_1_5_Controller

如果 HTTP 标头中不存在 X-API-VERSION,那么 spring 默认会调用 PersonController。

如果 X-API-VERSION 在 HTTP 标头中存在,那么它应该调用 Person_Version_1_5_Controller。

那么我们如何使用spring boot来实现这种控制器之间的切换呢?

【问题讨论】:

    标签: spring spring-mvc spring-boot


    【解决方案1】:

    查看Spring's documentation,看起来RequestMappingheader 参数可能在这种情况下有用:

    @RequestMapping(value = "/something", headers = "X-API-VERSION=...")
    

    【讨论】:

    • 桑杰,感谢您的回复。这看起来很有希望,会尝试一下,谢谢。
    【解决方案2】:

    我认为你从错误的角度来处理这个问题。

    您可以将它们拆分为单独的 JAR / 应用程序部署,例如app-v1.jarapp-v2.jar。您可以在堆栈中的更高级别上进行路由,使用基于 HTTP 标头的负载平衡器,该负载平衡器将根据请求中指定的版本标头将请求转发到正确版本的应用程序。

    【讨论】:

    • 感谢您的回复。因此,现在我们正在计划将其作为 POC,并且只是想知道是否可以使用 Spring 进行这种“切换”。因此,任何代码示例都会有所帮助。再次感谢。
    猜你喜欢
    • 2016-01-27
    • 2015-06-08
    • 2018-11-24
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多