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

时间:2013-06-24 05:33:10

标签: c# web-services rest post parameters

我有一个休息网络服务,假设有一个方法

int foo(Mytype x)

它有很多客户端,我想向Mytype添加一个参数并改变foo的行为方式,因为这是一个宁静的服务所以所有客户端也实现了Mytype版本的任何想法如何在不破坏任何客户的情况下实现这一目标?

3 个答案:

答案 0 :(得分:0)

你考虑过版本控制吗?例如。服务器/ VER2 /富

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

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

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

答案 1 :(得分:0)

我认为最安全的方法是进行版本控制。

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

application/json+foo;application,v=2

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

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

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

答案 2 :(得分:0)

我在int请求中添加了POST,但没有破坏任何内容。所以看起来像为休息服务请求类添加一个参数并不是真正的“突破性变化”,但删除一个肯定会破坏客户端。