gpt4 book ai didi

django - 如何实现多版本的api后端

转载 作者:行者123 更新时间:2023-12-04 08:29:13 25 4
gpt4 key购买 nike

我正在使用 Django 来实现一个私有(private)的类似 rest 的 API,但我不确定如何在后端处理不同版本的 API。

意思是,如果我有两个版本的 API,我的代码是什么样的?我应该有不同的应用程序来处理不同的版本吗?不同的函数应该处理不同的版本吗?或者我应该只在一个版本与另一个版本不同时使用 if 语句?

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

谢谢

最佳答案

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

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

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

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

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

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

关于django - 如何实现多版本的api后端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7619645/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com