我的用户在iOS应用中输入一些信息字段。 必须在我的服务器上验证此信息,该服务器具有RESTful API。 验证后,iOS应用程序的UI会更改以指示结果。
GET,PUT或POST似乎都不合适,因为我没有获得资源,也没有创建或更新资源。
实施此验证的最佳拟合REST操作是什么?
答案 0 :(得分:7)
我使用与您相同的方案并使用PUT。你必须问自己:“当我两次发送相同的请求时,这会在服务器上产生不同的状态吗?”如果是,请使用POST,如果没有使用PUT。
答案 1 :(得分:6)
我的用户在iOS应用中输入一些信息字段。此信息 必须在我的服务器上验证,该服务器具有RESTful API。后 验证iOS应用程序的UI更改以指示结果....我是 没有获得资源,也没有创建或更新资源。
由于你没有保存任何东西(不修改任何资源),我认为这在技术上对我来说比RPC更多RPC。
以下是我的意见,所以不要把它当成福音:
如果信息只是提交而您说是或否,而您没有保存,我会说POST
很好......
如果实际上正在保存/更新信息,那么选择正确的HTTP方法会更加相关。
POST = CREATE / SUBMIT (in an RPC context)
PUT = UPDATE (or CREATE if there is nothing to UPDATE)
答案 2 :(得分:2)
我建议使用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方法,其中验证是具有服务器状态的资源。
答案 3 :(得分:0)
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
答案 4 :(得分:-1)
似乎您没有以正确的方式执行此操作,如果验证在服务器端进行,则应该在使用 POST 方法提交数据时进行。然后您将验证该数据,如果验证失败,则您可以引发 400 BAD REQUEST 错误,否则您可以创建资源。
这种方法更符合 RESTful,因为 POST 方法被正确用于创建资源或在验证失败时引发 400