RESTFUL API:拥有发送到不同版本的API的外键是很好的吗?



我们正在使用 django Rest Framework 开发一个安息的API,我们决定处理外国键,例如:

GET https://url_to_api/api/v2/foo/1:
{
    "id": 1,
    "bar": "https://url_to_api/api/v2/bar/6/",
    "baz": "https://url_to_api/api/v3/baz/4/"
}

这是 foo的ID 1 的GET请求。

django rest框架将URL返回到V2与bar实体的关系,因为/api/v2/bar/6/发送到仅此版本使用的视图,但它将URL返回到V3(https://url_to_api/api/api/api/v3)/baz/4/)与BAZ实体的关系,因为它的视图与V2的视图相同,而Django Rest框架反向引擎返回了发送到同一视图的URL的第一个结果。

我对此行为有几个问题:

  • 是正常行为,还是我们缺少或做错了什么?
  • 将发送到API的不同版本的URL是否很好?

关于如何管理此问题的其他想法?

这是DRF中的正常行为。因此,您可以像这样指定,或者您为所有内容指定自定义。

# bookings/urls.py
urlpatterns = [
    url(r'^$', bookings_list, name='bookings-list'),
    url(r'^(?P<pk>[0-9]+)/$', bookings_detail, name='bookings-detail')
]
# urls.py
urlpatterns = [
    url(r'^v1/bookings/', include('bookings.urls', namespace='v1')),
    url(r'^v2/bookings/', include('bookings.urls', namespace='v2'))
]

以获取进一步的参考,请参阅此

相关内容

最新更新