Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.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
Java 如何保持所有版本的RESTful界面在线?_Java_Rest_Jakarta Ee_Maven - Fatal编程技术网

Java 如何保持所有版本的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

我们的JavaEE项目有一个RESTful接口,类似于
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移动永久重定向即可