1

我们将为我们的 API 代码实现一个版本控制系统,该系统基于 sinatra 构建,并且将有一个默认的 API 版本,客户端将能够选择添加 HTTP Accept Header 的特定版本。

现在我想了解您是否将 API 版本信息严格保留在控制器中,或者您允许 api 版本以某种方式在您的模型中传递。如果将它保存在控制器中,那么在模型中传播 API 版本有什么缺点?

4

2 回答 2

0

对您的 API 进行版本控制并不意味着您的控制器在内部处理版本控制,然后与也在内部处理版本控制的模型进行通信。相反,这意味着您应该拥有不同版本的控制器和模型,您可以根据请求中的 API 版本在运行时换入和换出。

现在,我从提到 Sinatra 推测您正在使用 Ruby。我对 Sinatra 或 Ruby 知之甚少,但我为 ASP.NET MVC 4 回答了一个类似的问题,并讨论了由 Sebastiaan Dammann 编写的版本控制框架。

也许看看 Ruby 是否已经存在类似的框架。

于 2013-02-28T19:56:20.980 回答
0

在 RESTful API 设计中,版本控制是通过选择媒体类型来完成的,我相信这就是您想要做的。如果我对第二段的理解正确,您是在问版本信息是否也应该在交付的响应中(即文档模型的一部分)?

这样的决定是任意的,但许多格式在其内部携带版本信息,以防它们通过元数据(例如版本信息)可能丢失的有损系统。出于这个原因,我建议将其放入您的模型中。

于 2013-01-25T14:01:31.567 回答