因此,在google上搜索它,似乎普遍的共识是在resturi中嵌入版本号是一种不好的做法,也是一个不好的主意。
即使如此,也有强烈的支持者支持这一点。
e、 克Best practices for API versioning?
我的问题是如何在django rest框架中使用accept header/content协商来实现这一点。
它看起来像框架中的内容协商,
http://django-rest-framework.org/api-guide/content-negotiation/
已配置为基于接受的MIME类型自动返回预期值。如果我开始对自定义类型使用Accept头,我将失去这个框架的好处。
有没有更好的方法在框架中实现这一点?
一种方法是将版本控制指定为媒体类型的一部分。
这就是GitHubcurrently do for their API。
您还可以在accept头中包含媒体类型参数,例如
Accept: application/json; version=beta
,它将与JSONRenderer
成功匹配。然后,可以根据接受的媒体类型对视图进行编码,使其行为有所不同,请参见here。在api中有很多不同的版本控制模式,我不认为对正确的方法有什么共识,但这是一个合理的可能性。
2015年1月更新:3.1.0版将提供更好的版本控制支持。请参阅[此请求]
更新2015年3月:版本控制API的文档are now available。
(https://github.com/tomchristie/django-rest-framework/pull/2285)了解更多详细信息。
更新:
versioning现在得到了正确的支持。
您的链接提供了一些答案:
所以我们采用了这种方法,并允许客户机在请求头(X-version)中指定版本,下面是我们的方法:
API应用程序侧面的结构:
项目url.py:
api应用程序级URL.py:
版本级url.py
创建中间件以通过更改路径信息切换到正确的代码,请注意,在项目级URL中定义的命名空间(“api”)不灵活,需要在中间件中知道:
示例url:
相关问题 更多 >
编程相关推荐