RESTful API:什么METHOD/HEADER组合用于仅验证

Fle*_*eep 6 api rest web-services

我希望我的API有一个仅验证请求.例如,如果我有一个URL,例如:

http://api.somesite.com/users/12345
Run Code Online (Sandbox Code Playgroud)

并且用户在客户端上填写一种信息,我最终将PATCH/PUT/POST到该资源.当用户填写表单时,我可能希望定期将部分完整的更新表示发送到服务器,以便我可以显示其输入的实时验证(例如,"已经使用了该用户名","该密码是太短").

没有标准的HTTP METHOD或HEADER似乎允许在同一资源上执行此行为.看来我的选择是:

  1. 创建新的从属资源以进行验证
  2. 使用自定义标头(仅限x-somesite-validation-)和PUT表示我要验证但不保存

sui*_*ing 5

一些选项

1) 使用自定义标头
2) 在查询字符串中放入一些内容,指示仅验证
3) 使用操作 URl 例如 \IndividualClient\123\actions\Validate\Invoke {section 19 here http://restfulobjects.files.wordpress.com/2011 /11/restful-objects-spec-052.pdf }
4) 分层 URL 例如 \IndividualClient\123\Validation

从这篇文章中我找到了这个建议

每当您必须执行类似 RPC 的操作时,请使用 POST 使用 GET 进行计算等操作,除非您的输入很大,在这种情况下使用 POST

关于您的具体问题,#4 和#5 应该使用POST。这些操作属于上述“类似 RPC”的指导方针。对于 #5,请记住 POST 不一定必须>使用 Content-Type:application/x-www-form-urlencoded。这可以很容易地成为 JSON 或 CSV >有效负载。

这是我正在考虑的:

这是资源的添加:
用户/验证
POST
请求:用户资源
响应:ValidationResult
响应代码 200, 400. 404. 500

这是更新资源
user/204/validation
POST
Request:UserResource,
Response:ValidationResult Response Codes 200, 400. 404. 500