我正在研究一个可以使用put请求更新的资源,以根据请求内容更新任何字段。我正面临管理此路由权限的问题。任何用户都可以更新某些字段。其他人需要管理权限。我正在解析请求的内容以决定权限。是否根据权限分离路线。更新基本信息。更新一些敏感字段。更新状态(需要管理权限)。
答案 0 :(得分:1)
我不确定您是否正在寻找特定于Django REST框架的建议,但由于我不熟悉它,我将提供有关RESTful设计的想法。一般
REST完全与资源有关,您可以将其视为名词。每条"路线"应该表示一个唯一的资源,每个资源应该由一个URI表示。通常,这将遵循root/collection/resource
的模式,其中集合和资源可能重复。例如:http://api.halo.com/players/SomeGuy/matches/1234
在您描述的场景中,您正在对该资源进行部分更新(PATCH),其中调用者可以更新一个或多个字段。无论呼叫者如何,您仍然希望更新相同的资源。因为您正在对同一个名词进行更改,所以RESTful约定会规定它是相同的URI。
我建议使用单个URI来响应PATCH动词并接受调用者希望进行的更改。在验证传入消息期间,如果您看到指定的受限字段且调用者没有正确的权限,则使用HTTP 403(禁止)进行响应以发出信号"我们知道您是谁,但是您不知道有权做你要求做的事。"