【发布时间】:2014-03-24 18:38:05
【问题描述】:
本题来源于Django-Rest-Framework updating a foreign key BY Id。
我有一个类似的问题。我爱HyperlinkedModelSerializer。我可以从我的网络浏览器(例如 Chrome、FF 等)浏览 API 的所有链接,但是当我尝试使用 API 时,我在客户端应用程序中有很多工作要做。我对GET 请求没有意见。在使用 ForeignKey 更新模型时的 POST 请求中,我需要在向服务器发出 POST 请求之前从客户端应用程序(例如 AngularJS、Android 等)构造 URL。我知道ModelSerializer 解决了客户端应用程序中的问题,但无法从网络浏览器导航。
我不确定设计可浏览 REST API 的好方法是什么。我不确定大多数人是如何解决这个问题的,当他们想要创建一个可浏览的 REST API 时,他们不想通过在制作之前解析 URL-ID 来增加客户端应用程序的复杂性POST 请求。或者这只是我的问题,没有人遇到。
为什么不HyperlinkedModelSerializer 改为执行以下操作。
- 根据
GET请求返回URL 中的所有ForeignKey。这样开发人员就可以从他们的网络浏览器中导航 API。 - 根据
POST请求接受ID。这样开发人员就可以只传递 ID,而不必从客户端应用构建完整的 URL。
示例:
c = Client()
data = {
'user': '1',
'industry': '1'
}
c.post('http://localhost:8000/favorite_industries/', json.dumps(data), 'application/json')
response = c.get('http://localhost:8000/favorite_industries/')
print(response.content)
# [{"id": 1, "user": "http://localhost:8000/users/1/", "industry": "http://localhost:8000/industries/1/"}]
问题:
HyperlinkedModelSerializer的当前设计有什么优势?我的建议有什么缺点?
怎么做?
【问题讨论】:
-
正是我想要的(并期望成为默认行为)。您是否偶然找到了解决方案?
标签: django rest django-rest-framework