Django RESTfulAPI:如何判断GET检索到的对象是否可由当前用户编辑(例如,可放置)?
目前,我使用Django设置了一个RESTful API后端,我可以通过以下GET列出一组文章:Django RESTfulAPI:如何判断GET检索到的对象是否可由当前用户编辑(例如,可放置)?,django,rest,django-rest-framework,frontend,Django,Rest,Django Rest Framework,Frontend,目前,我使用Django设置了一个RESTful API后端,我可以通过以下GET列出一组文章: api/articles/ 此外,我可以通过以下方式获得一篇文章: api/article/1/ 每篇文章都由某个用户拥有,当然,一个用户可以拥有多篇文章 在前端,我在加载页面时展示了所有文章,我希望当前登录的用户能够看到他们拥有的不同风格的文章,例如,用方框勾勒出来的,并且有一个相关的“删除”或“编辑”按钮 这要求我在检索文章之后,以编程方式告诉当前用户哪些文章是自己的。一种方法是用所有者id
api/articles/
此外,我可以通过以下方式获得一篇文章:
api/article/1/
每篇文章都由某个用户拥有,当然,一个用户可以拥有多篇文章
在前端,我在加载页面时展示了所有文章,我希望当前登录的用户能够看到他们拥有的不同风格的文章,例如,用方框勾勒出来的,并且有一个相关的“删除”或“编辑”按钮
这要求我在检索文章之后,以编程方式告诉当前用户哪些文章是自己的。一种方法是用所有者id检查当前用户id。但是我觉得这不是一个好的选择,因为用户id是完全在客户端进行检查的,并且可能与实际的服务器判断不一致
因此,有没有一种方法可以通过查看GET的响应(比如,让服务器返回一个属性“editable=true/false”)来判断当前用户是否可以编辑(放置)资源
我知道这可以通过手动附加这样的属性在服务器端完成。然而,我只是问是否有更好的/普遍的做法
我刚开始学习web开发,如果这个问题听起来很琐碎,我很抱歉。谢谢大家! 我认为这是一个非常有趣的问题 我有几个选择:
- 您可以向
响应添加包含此信息的HTTP头,即GET-api/article/1
。这样做有助于API客户机,因为它不需要知道任何其他信息。我认为当返回多个实体时,这不是一个好方法李>HTTP\u-METHODS\u-ALLOWED=PUT、PATH、DELETE
- 调用
。可以返回该资源上该用户允许的方法,但请注意,在我看来,这种方法在性能方面不是很好,因为它会复制到服务器的请求数选项api/article/1
- 但是,如果返回的实体还包含所有者或它的信息,该怎么办?在这种情况下,客户是否能够知道应用哪种策略,并尝试自己解决它?请注意,可以从另一个端点(只需要一个调用)或甚至通过登录响应来获取策略。如果您的实体不包含此类信息,也可以将其作为HTTP头返回(如上面的第一个选项)
这些选项看起来像我要找的。非常感谢你!不客气。您可以通过接受我的回答来感谢我,感谢任何其他将面临类似问题的用户。