用于验证信息的REST操作(GET,PUT或POST)是什么?

时间:2013-08-13 20:50:42

标签: http rest post asp.net-web-api put

我的用户在iOS应用中输入一些信息字段。 必须在我的服务器上验证此信息,该服务器具有RESTful API。 验证后,iOS应用程序的UI会更改以指示结果。

GET,PUT或POST似乎都不合适,因为我没有获得资源,也没有创建或更新资源。

实施此验证的最佳拟合REST操作是什么?

5 个答案:

答案 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