此问题基于Django-Rest-Framework updating a foreign key BY Id派生。Django-Rest-Framework,使用HyperlinkedModelSerializer时通过ID更新外键
我有一个类似的问题。我爱HyperlinkedModelSerializer
。我可以通过浏览器浏览API的所有链接(例如Chrome,FF等),但是当我尝试使用API时,我在客户端应用程序中需要做很多工作。我没有GET
请求的问题。在使用ForeignKey更新模型时,在请求POST
时,我需要在向服务器发出POST请求之前从客户端应用程序(例如AngularJS,Android等)构建URL。我知道ModelSerializer
可从客户端应用程序中解决问题,但无法从Web浏览器导航。
我不确定什么是设计可浏览的REST API的好方法。我不确定大多数人是如何解决这个问题的,当他们想创建一个可浏览的REST API时,同时他们不希望在制作之前解析URL-ID来增加客户端应用程序的复杂性POST
请求。或者这可能只是我的问题,没有身体遭遇。
为什么不用HyperlinkedModelSerializer
代替以下内容。
- 请求返回URL中的所有ForeignKey。因此,开发人员可以从他们的Web浏览器导航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
目前的设计?我的建议有什么缺点?
这怎么办?
正是我想要的(并且预期是默认行为)。你有没有找到解决办法? – Ariel