命名 Rest API 个端点以进行验证
Naming Rest API endpoints for verification
在 Rest API 中,端点遵循的约定是避免将它们命名为像 getAllStudents 这样的动词。但是我最近一直面临的问题是,如何证明验证端点的合理性。例如我想验证用户的指纹。
我应该如何命名端点?我想到的一种方法是 POST /user/{id}/verify-fp。这是正确的吗??
我想创建一个端点来获取用户是否被锁定。为此,我想不出任何名字。
请注意,我不想 return 任何用户数据,我只想 return 如果真或假,所以 GET /users/{id} 将不起作用对我来说。
对于您的第一个用例,/fpverification/{id}/verify
工作正常。不过,如果您使用的是主键,则更简单的方法是:
fpverification/<int:pk>/verify
要检查锁,我会将其嵌套在用户路径下。所以您的端点可能如下所示:
users/<int:pk>/validate
或者,如果您经常检查锁定状态,则可以在向原始 link 发送请求时在用户负载中包含 true/false 状态。
在某些情况下,'good REST design' 并不是每个用例的最佳方法。虽然可以坚持 REST 约定并严格考虑传输完整状态的端点,但不要在 URI 等中使用动词,对于某些类型的操作(例如您的操作)这样做的痛苦可能不值得。
像这样的端点感觉更像 RPC,而且更适合。因此,在 /user/{id}/verify-fp
等命名良好的端点使用 POST
似乎是创建异常的好地方。
在 Rest API 中,端点遵循的约定是避免将它们命名为像 getAllStudents 这样的动词。但是我最近一直面临的问题是,如何证明验证端点的合理性。例如我想验证用户的指纹。
我应该如何命名端点?我想到的一种方法是 POST /user/{id}/verify-fp。这是正确的吗??
我想创建一个端点来获取用户是否被锁定。为此,我想不出任何名字。 请注意,我不想 return 任何用户数据,我只想 return 如果真或假,所以 GET /users/{id} 将不起作用对我来说。
对于您的第一个用例,/fpverification/{id}/verify
工作正常。不过,如果您使用的是主键,则更简单的方法是:
fpverification/<int:pk>/verify
要检查锁,我会将其嵌套在用户路径下。所以您的端点可能如下所示:
users/<int:pk>/validate
或者,如果您经常检查锁定状态,则可以在向原始 link 发送请求时在用户负载中包含 true/false 状态。
在某些情况下,'good REST design' 并不是每个用例的最佳方法。虽然可以坚持 REST 约定并严格考虑传输完整状态的端点,但不要在 URI 等中使用动词,对于某些类型的操作(例如您的操作)这样做的痛苦可能不值得。
像这样的端点感觉更像 RPC,而且更适合。因此,在 /user/{id}/verify-fp
等命名良好的端点使用 POST
似乎是创建异常的好地方。