如何实现多个版本的api后端

mea*_*a36 5 api django rest

我正在使用Django来实现类似私有的API,我不确定如何在后端处理不同版本的API.

这意味着,如果我有两个版本的API,我的代码是什么样的?我应该有不同的应用程序处理不同的版本?不同的功能应该处理不同的版本 或者,当一个版本与另一个版本不同时,我应该使用if语句吗?

我计划在标题中说明版本.

谢谢

Jan*_*sen 3

您不需要对 REST API 进行版本控制。使用 REST,版本控制可以在运行时通过所谓的“必须忽略有效负载扩展规则”或通过内容协商进行。

“必须忽略有效负载扩展规则”是指您在消息设计中构建的一个方面。“必须忽略”意味着处理给定格式消息的软件必须忽略任何未知的语法结构。这就是我们从 HTML 中了解到的内容,也使得在 HTML 页面中插入各种花哨的标签成为可能,而不会导致解析器阻塞。

“必须忽略”允许您通过向已发送的内容添加内容来发展服务的功能,而无需考虑仅理解旧版本的客户。

内容协商是指协商服务器在运行时发送给给定客户端的实际表示的 HTTP 内置机制。典型的场景是这样的:客户端在请求中发送 Accept 标头来宣传它们的能力,服务器根据这些能力选择要发回的表示形式。但这个主题也有一些变体(详细信息请参见此处:http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html)。

内容协商允许不兼容的更改,这意味着我可以将我的服务发展为能够发送不兼容的旧版本和新版本,并且基于 Accept 标头我的服务将发送适当的版本。

底线:使用这两种方法,您的 API 都保持原样。无需在 API 级别进行任何版本控制 - 特别是不要经常建议(但完全错误)在 URI 中包含版本标识符(记住,您在这里进行的是 REST,而不是 SOAP!)