在不中断客户端的情况下向Restful服务POST添加参数



我有一个rest web服务,它假设有一个方法

int foo(Mytype x)

它有很多客户端,我想给Mytype添加一个参数,并改变foo的行为,因为这是一个restful服务,所以所有客户端都实现了Mytype的版本。有什么想法可以在不破坏任何客户端的情况下实现这一点吗?

您是否考虑过版本控制?例如服务器/ver2/foo

我认为你唯一的其他选择是实现新功能,这样就不需要了,例如

foo (MyType myType) {
  if (myType.newField exists) {
  // do new stuff
  }
}

最后一点,我建议将这两种方法结合起来,这将确保foo向后兼容。

我认为最安全的方法是使用版本控制。

您可以为MyType提供一个新版本,该版本可以使用Accept和Content-type标头中的MIME类型描述来处理,例如:

application/json+foo;application,v=2

另一种可能性是通过URI/URL处理版本,即

https://api.yourhost.com/v2/MyType

就像Damo已经说过的那样,您必须处理服务器上不同资源表示的使用。

我在POST请求中添加了一个int,它没有破坏任何内容。所以看起来向rest服务请求类添加一个参数并不是真正的"破坏更改",但删除一个参数肯定会破坏客户端。

最新更新