目前我使用Django设置RESTful API后端,我可以通过以下GET列出一组文章:
api/articles/
另外,我可以通过以下方式获得一篇文章:
api/article/1/
每篇文章都归某个用户所有,一个用户当然可以有多篇文章。
在页面端,我在加载页面时显示所有文章,我希望当前登录的用户可以看到他们拥有的文章以不同的风格,例如,用方框勾勒出来,以及有一个关联的“删除”或“编辑”按钮。
这要求我在检索文章后,以编程方式告知当前用户拥有哪些文章。一种方法是使用所有者ID检查当前用户ID。但是我觉得这不是一个好的选择,因为用户ID是在客户端完全完成检查,可能与实际的服务器判断不一致。
因此,有没有办法,通过查看GET的响应来判断(例如,让服务器返回属性“editable = true / false”)以获取当前用户是否可以编辑(PUT)资源?
我知道这可以在服务器端完成,方法是手动附加这样的属性。但是,我只想问是否有更好的/普遍的做法。
我刚刚开始学习网页开发,如果这个问题听起来微不足道,我很抱歉。谢谢!
答案 0 :(得分:2)
您可以按照建议手动附加礼仪。这种方法的进步是你不需要任何其他的http请求。
第二种可能性是,您的客户有意请求有关端点权限的信息。在这种情况下,我建议使用OPTIONS HTTP方法。您将OPTIONS HTTP请求发送到api / articles / 1,后端返回想要的信息。这可能正是OPTIONS方法和DRF元数据的用途。
答案 1 :(得分:0)
我认为这是一个非常有趣的问题。
有几种选择:
GET api/article/1
响应中添加包含此信息的HTTP标头,即HTTP_METHODS_ALLOWED=PUT,PATH,DELETE
。这样做有助于API客户端,因为它不需要知道任何其他内容。我认为当返回多个实体时,这不是一个好方法。 OPTIONS api/article/1
。可以返回该资源上该用户的允许方法,但请注意,在我看来,这种方法在性能方面不是很好,因为它复制了对服务器的请求数。