java - 如何通过 spring mvc 使用 REST API 中的版本?

标签 java rest spring-mvc

采用务实的 RESTful API 方法,url 定义为 http://<host>:<port>/<apiname>/api/v1.0/...其中 v1.0 是 api 版本。现在所有客户端都将坚持这个 url 并开始使用这个 api。现推出新版api http://<host>:<port>/<apiname>/api/v2.0/...具有一些额外的功能。此更改将破坏现有客户端,因为它们都在其网址中使用旧版本。如何在不破坏java和spring mvc中现有客户端的情况下更改REST api版本?

例如 假设我有一个 Web 应用程序,我使用 url 模式 .../api/v1.0 注册了 DispatcherServerlet 。现在 API 中还有一些功能,这些功能将作为另一个版本的一部分提供。我是否需要再制作一个包含 url 模式 ..,/api/v2.0 的 Web 应用程序。问题是代码重复并且需要维护两个网络应用程序。

一般描述即可。我不想在 header 中传递 api 版本。

最佳答案

维护 v1 的分支、v2 的分支,为 WAR 指定不同的名称,然后部署它们。或者用软件来实现——多个项目,每个项目都有一个 API,最好引用一个共享服务层。

顺便说一句,如果您打算如此频繁地发布新版本以至于需要多个数字,那么您可能会遇到麻烦。只需坚持 v1、v2。每次发布新版本时,都会增加重大的支持负担。

关于java - 如何通过 spring mvc 使用 REST API 中的版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35740608/

相关文章:

java - 带有 JSON 和 XML 的 Spring REST

git - Azure DevOps git 策略配置 api 损坏了吗?

javascript - 使用springmvc框架jQuery Ajax文件上传返回415

java - 为什么我们要写Synchronized(ClassName.class)

java - 应用程序 :dexDebug error in Android Studio

Web 上的 Java 应用程序框架

java - 无法解析位置/'资源/

java - scala @Serializable 和 Java Serializable 有什么区别?

http - RESTful 服务必须始终基于 HTTP 吗?

java - lambda 中的 Spring Request 作用域 bean