Java 如何保持所有版本的RESTful界面在线?
我们的JavaEE项目有一个RESTful接口,类似于Java 如何保持所有版本的RESTful界面在线?,java,rest,jakarta-ee,maven,Java,Rest,Jakarta Ee,Maven,我们的JavaEE项目有一个RESTful接口,类似于http://example.com/rest/。在开发过程中,我们将创建此接口的新版本。为了实现向后兼容性,我们希望在不同的URL上在线提供它们,例如: http://example.com/rest/1.0/ http://example.com/rest/1.1/ 问题是如何部署它们?我们是否要组织一些战争(我们使用Maven)?但该项目在/trunk中有最新版本。。也许我们应该通过一些Maven插件将它们打包成一场战争,从Subve
http://example.com/rest/
。在开发过程中,我们将创建此接口的新版本。为了实现向后兼容性,我们希望在不同的URL上在线提供它们,例如:
http://example.com/rest/1.0/
http://example.com/rest/1.1/
问题是如何部署它们?我们是否要组织一些战争(我们使用Maven)?但该项目在/trunk
中有最新版本。。也许我们应该通过一些Maven插件将它们打包成一场战争,从Subversion/tags
检索它们?您的体验如何?它们都是应用程序的“一流”部分
不要把它们分开。如果你试图更新一个而不去碰另一个,那只会让你自己感到困惑
当您进行更改时,您可能无论如何都必须发布所有内容。它们都是应用程序的“一流”部分
不要把它们分开。如果你试图更新一个而不去碰另一个,那只会让你自己感到困惑
当你做出改变时,你可能无论如何都必须释放所有东西。当我用锤子敲击手指时,手指很痛,我该怎么办?别打了,也许 REST体系结构风格的主要目标之一是允许客户机和服务器独立发展 通过创建服务的新版本,实际上就是创建一个全新的服务来替换旧的服务。通过这样做,你就丢掉了其他人想要达到的目标 也许您只是想构建一个HTTP Api,在这种情况下,请继续。(但当版本控制受到伤害时,不要抱怨:-)
如果您确实想做REST,那么就要认识到,如果您发现自己需要对RESTAPI的各个部分进行版本化,那么您就做错了。这可能发生,如果是这样的话,我建议首先考虑的是媒体类型的版本化。对URI进行版本控制是最后的选择。当我用锤子敲击手指时,手指会痛,我该怎么办?别打了,也许 REST体系结构风格的主要目标之一是允许客户机和服务器独立发展 通过创建服务的新版本,实际上就是创建一个全新的服务来替换旧的服务。通过这样做,你就丢掉了其他人想要达到的目标 也许您只是想构建一个HTTP Api,在这种情况下,请继续。(但当版本控制受到伤害时,不要抱怨:-)
如果您确实想做REST,那么就要认识到,如果您发现自己需要对RESTAPI的各个部分进行版本化,那么您就做错了。这可能发生,如果是这样的话,我建议首先考虑的是媒体类型的版本化。对URI进行版本控制是最后的选择。使用不同的接口类路径部署不同的WAR。这样,您可以删除“旧”版本,而不会干扰新版本。就我个人而言,我总是在新文件名下部署新版本。这样,您就不必关心任何旧文件。使用不同的接口类路径部署不同的WAR。这样,您可以删除“旧”版本,而不会干扰新版本。就我个人而言,我总是在新文件名下部署新版本。这样,您就不必关心任何旧文件。如果通过版本控制,您谈论的是资源/内容类型的结构,那么您必须保留旧的实现并使用,以便旧的客户端仍然可以使用您的服务
如果唯一的更改是URL结构,那么您不需要任何版本控制,只需使用301永久移动重定向。如果通过版本控制,您谈论的是资源/内容类型的结构,那么您必须保留旧的实现和使用,以便旧的客户端仍然可以使用您的服务 如果唯一的更改是URL结构,那么您不需要任何版本控制,只需使用301移动永久重定向即可