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

Tej*_*ora 4 c# api rest version wrapper

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

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

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

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

Mat*_*int 8

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

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

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

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

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

var client = new MyClient();
client.DoSomething();   // Makes sense    
client.DoSomethingV2(); // Huh?
Run Code Online (Sandbox Code Playgroud)

  • 这将破坏与未更新的任何客户端的兼容性.您应该对服务器端进行版本控制,而不是客户端版本. (2认同)

Bob*_*tor 2

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

/current/api?id=x....
/version2/api?id=x...
Run Code Online (Sandbox Code Playgroud)

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

这样您就可以让您的客户转移到您的新系统,而不会出现紧急情况。

  • 他问的是客户端,而不是服务器。 (2认同)