提问人:meaning-matters 提问时间:8/14/2013 最后编辑:meaning-matters 更新时间:10/5/2021 访问量:31633
用于验证信息的 REST 操作(GET、PUT 或 POST)?
Which REST operation (GET, PUT, or POST) for validating information?
问:
我的用户在 iOS 应用中输入一些信息字段。 此信息必须在我的服务器上进行验证,该服务器具有 RESTful API。 验证后,iOS 应用的 UI 将更改以指示结果。
GET、PUT 或 POST 似乎都不合适,因为我没有获取资源,也没有创建或更新资源。
实现此验证的最佳 REST 操作是什么?
答:
我使用与您相同的场景,并为此使用 PUT。你必须问自己:“当我两次发送相同的请求时,这会在服务器上产生不同的状态吗?如果是,则使用 POST,如果没有,请使用 PUT。
评论
PUT
针对哪个 URI?
我的用户在 iOS 应用中输入一些信息字段。此信息 必须在我的服务器上进行验证,该服务器具有 RESTful API。后 验证 iOS 应用程序的 UI 更改以指示结果。我是 未获取资源,也未创建或更新资源。
由于您没有保存任何东西(不修改任何资源),我认为这在技术上比 RESTful 更像 RPC。
以下是我的观点,所以不要把它当作福音:
如果信息只是被提交,而你说是或否,而你没有保存它,我会说没问题。POST
如果信息确实被保存/更新,那么选择正确的HTTP方法将更加重要。
POST = CREATE / SUBMIT (in an RPC context)
PUT = UPDATE (or CREATE if there is nothing to UPDATE)
评论
/check
/resource(/:id)
/resource/check
我建议使用 a 和 two 请求。此资源的每个实例都表示一组数据的验证。工作流程:ValidationResource
1. 创建新的 ValidationResource
- 请求:
POST /path/to/validations
- 要验证为正文的数据
- 响应:
201 Created
Location: /path/to/validations/<unique-id-of-this-validation>
2. 查找结果
- 请求:
GET /path/to/validations/<unique-id-of-this-validation>
- 职责:
200 OK
- 正文:或
{'valid': true}
{'valid': false}
- 正文:或
这是一种 RESTful 方法,其中 Validation 是具有服务器状态的 Resource。
Google 建议使用 REST API 的自定义方法
对于自定义方法,它们应使用以下通用 HTTP 映射:
https://service.name/v1/some/resource/name:customVerb
使用 : 而不是 / 将自定义动词与 资源名称支持任意路径。例如,取消删除 文件可以映射到 POST /files/a/long/file/name:undelete
来源: https://cloud.google.com/apis/design/custom_methods
因此,为了进行验证,URL 应为 POST /resource:validate
似乎您没有以正确的方式进行验证,如果验证是在服务器端进行的,那么它应该在使用 POST 方法提交数据时发生。然后,您将验证该数据,如果验证失败,则可以引发 400 BAD REQUEST 错误,否则可以创建资源。
这种方法更 RESTful,因为 POST 方法用于创建资源或在验证失败时引发 400
我相信它类似于 GET 实体,但由于我们需要发送数据进行验证,并且在 URL 中发送机密数据是错误的习惯,因为只有有效负载数据由 TLS 加密,因此剩下的唯一方法是 POST 或 PUT。
但是,您可以在 validate 中保存或更新数据(例如。“verified”:false)。根据要求,您可以选择 或(如果没有更新,建议)POST
PUT
POST
POST /user/validate-something
评论