4

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

我想知道在我的 c# 包装器中支持不同版本的 REST API 的最佳实践是什么。

我应该怎么做——在代码设计和类定义方面——这样一个包装器可以与不同版本的 API 无缝工作——它也应该是可扩展的——这样将来任何新版本的 API 也可以很容易地得到支持.

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

4

2 回答 2

8

你问的东西有点奇怪。让我重申你所说的:

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

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

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

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

var client = new MyClient();
client.DoSomething();   // Makes sense    
client.DoSomethingV2(); // Huh?
于 2012-10-01T18:50:34.480 回答
2

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

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

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

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

于 2012-10-01T16:12:47.617 回答