一尘不染

django-rest-framework:api版本控制

django

因此,围绕Google进行搜索似乎是普遍的共识,即在REST URI中嵌入版本号是一个坏习惯,也是一个坏主意。

即使在SO上,也有很强的支持者支持这一点。
例如API版本控制的最佳做法?

我的问题是关于如何完成在django-rest-framework中使用accept标头/内容协商的建议解决方案。

看起来框架中的内容协商 已经完成,
http://django-rest-framework.org/api-guide/content-negotiation/已配置为根据接受的MIME类型自动返回预期值。如果我开始对自定义类型使用Accept标头,那么我将失去框架的这种优势。

在框架中是否有更好的方法来实现这一目标?


阅读 436

收藏
2020-04-02

共1个答案

一尘不染

一种方法是将版本控制指定为媒体类型的一部分。

这就是GitHub 当前对其API所做的工作。

你还可以在你的接受标头中包含媒体类型参数,例如Accept: application/json; version=beta,可以成功匹配JSONRenderer。然后,你可以根据自己接受的媒体类型对视图进行编码,使其行为有所不同,请参见此处。

API的版本控制有很多不同的模式,我不会说关于正确方法的共识很大,但这是一种合理的可能性。

2020-04-02