RESTful API:具有发送到不同版本API的外键是否很好?

时间:2019-02-18 11:23:05

标签: django rest django-rest-framework

我们正在使用 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的第一个结果。

我对此行为有几个疑问:

  • 这是正常行为,还是我们丢失或做错了什么?
  • 拥有发送到其他版本API的URL是否很好?

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

1 个答案:

答案 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