Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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 RESTAPI中的资源版本控制_Java_Spring_Rest_Jakarta Ee_Spring Mvc - Fatal编程技术网

Java RESTAPI中的资源版本控制

Java RESTAPI中的资源版本控制,java,spring,rest,jakarta-ee,spring-mvc,Java,Spring,Rest,Jakarta Ee,Spring Mvc,我创建了一个作为web服务公开的应用程序。我正在努力遵循REST原则。我正在使用Spring4 到目前为止,我所做的是创建自己的mime类型application/vnd.mycompany-v1+json。从访问web服务的客户机上,我可以说出我想要的版本(目前只有一个) 然而,这并不是我需要做的全部。我还需要保留不同版本的资源,因为我可能会在不同版本之间添加/删除属性等。解决这个问题的方法是什么?是否为每个版本创建一个包 com.mycompany.web.resources.v1.Bike

我创建了一个作为web服务公开的应用程序。我正在努力遵循REST原则。我正在使用Spring4

到目前为止,我所做的是创建自己的mime类型
application/vnd.mycompany-v1+json
。从访问web服务的客户机上,我可以说出我想要的版本(目前只有一个)

然而,这并不是我需要做的全部。我还需要保留不同版本的资源,因为我可能会在不同版本之间添加/删除属性等。解决这个问题的方法是什么?是否为每个版本创建一个包

com.mycompany.web.resources.v1.Bike
com.mycompany.web.resources.v2.Bike
等?我想这种方法是可行的,但是在这个阶段,版本的数量是未知的,所以它可能是一个大的重复列表。我不知道这是不是一个问题,或者这是它必须的方式


我想我也不是第一个考虑对资源进行版本控制的人,那么这是如何处理的呢?

您应该通过在资源url中添加版本控制信息来保持不同的版本。类似于
http://yourserver/app/v1/..


您应该在api中包含版本控制的原因是,某些客户端可能已经在使用您以前的版本,并且不想升级。这更多是为了增加api设计的灵活性。当然,作为一个api提供商,您可以随时声明,从现在起您将不支持x版。

首先,您的要求可以实现……我记得去年9月看到Ben Hale在SpringOne上做了一次演讲。第二,让同一软件的多个版本实时运行是一个可怕的想法,因为你可以很容易地得到不同但完全相似的代码,它们之间有一些错误补丁,但不是全面的。我建议编辑你的问题,以澄清你正在对访问API的库进行版本控制,并不是说您正在尝试对API本身进行版本设置。@Charles Okey,我将问题更改为更清楚。这已由客户端的Accept标头和服务器设置的content type标头处理。我不喜欢这样把它保存在URL中的方法。问题是我应该如何利用这些资源。