最佳实践以及如何在客户端的C#包装器中支持不同版本的REST API

我编写了一个C#包装器来支持我们公司项目的REST API。 但是,这些API现在正在发生变化 – 就URL而言(可能会在URL中引入版本号)和它期望的数据对象并返回。

我想知道在我的c#wrapper中支持不同版本的REST API的最佳做法是什么。

我应该怎么做 – 在代码设计和类定义方面 – 以便一个包装器可以与不同版本的API无缝地工作 – 并且它也应该是可扩展的 – 以便将来可以轻松支持任何更新版本的API 。

我编写的c#包装器正在使用我们的Web服务API。 我已经在使用RestSharp客户端在c#wrapper中使用我们的Web服务API。

你要问的是一种微妙的怪异。 让我重申你所说的话:

1)您的组织有多个版本的同一服务。 也许它们像鲍勃建议的那样建立,/ current / api … / v1 / api … / v2 / api …等等或者也许是其他一些模式。

2)您希望单个C#库知道每个不同的版本。

这是第二部分,很奇怪。 通常,客户端库仅针对特定版本。 服务器有责任确保新版本的服务向后兼容旧版本,或隔离在新URL上。

问问自己 – 如果您要继续构建这个知道同一服务的多个版本的库,那么它对您库的消费者有何看法? 他们是否必须明确告诉您使用哪个版本? 这不是我期望必须注意的问题。

var client = new MyClient(); client.DoSomething(); // Makes sense client.DoSomethingV2(); // Huh? 

设置API版本,将当前版本保留为版本1,然后添加类似的v2

 /current/api?id=x.... /version2/api?id=x... 

这允许您更新api以支持新function,然后您可以为过时版本设置日落计划。

通过这种方式,您可以让客户在没有紧急情况的情况下转移到新系统。