我们正在使用 Django REST框架开发RESTful API,并且我们决定处理显示关系资源URL的外键,例如:
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/"
}
这是对API的版本2 上的 foo的ID 1 的GET请求。
Django REST框架将与bar实体的关系的URL返回到v2,因为/api/v2/bar/6/
发送到仅由该版本使用的视图,但是将URL返回到v3(https://url_to_api/api/v3/baz/4/ )与baz实体的关系,因为其视图与v2的视图相同,并且Django REST框架反向引擎返回发送到同一视图的URL的第一个结果。
我对此行为有几个疑问:
关于如何管理此问题的其他任何想法?
答案 0 :(得分:0)
这是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'))
]
为进一步参考,refer this