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

mea*_*ers 20 rest post http put asp.net-web-api

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

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

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

Luk*_*s K 7

我使用与你相同的场景并使用PUT.你必须问自己:"当我两次发送相同的请求时,这会在服务器上产生不同的状态吗?" 如果是,请使用POST,如果没有使用PUT.


小智 7

我建议使用一个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 方法,其中验证是具有服务器状态的资源。


Kri*_*ian 6

我的用户在iOS应用中输入一些信息字段.必须在我的服务器上验证此信息,该服务器具有RESTful API.验证后,iOS应用程序的UI会更改以指示结果....我没有获得资源,也没有创建或更新资源.

既然你没有保存任何东西(不修改任何资源),我认为这对我来说在技术上比REST更多RPC.

以下是我的意见,所以不要把它当成福音:

如果信息只是提交而且您说是或否,而您没有保存,我会说没问题POST.

如果实际上正在保存/更新信息,那么选择正确的HTTP方法将更加相关.

POST = CREATE / SUBMIT (in an RPC context)
PUT = UPDATE (or CREATE if there is nothing to UPDATE)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您跟进这个有用的链接.祝好运.PS,查看Apigee.com,他们进行API讨论和如何...他们曾经谈过良好的API结构,并且他们注意到你*可以*包含装饰现有路线的RPC风格的方法......即RESTFUL普通方法:`/ resource(/:id)`和用RPC修饰的RESTFUL:`/ resource/check`接受你正在验证/检查的参数 (2认同)
  • 另外还要注意返回状态代码:当要创建POST时它应该以201(Created)回答,而在你的情况下(RPC)我认为你可以自由地返回200(Ok)或者一如既往400(Bad)请求). (2认同)

Kam*_*man 5

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