8

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

http://api.somesite.com/users/12345

并且用户正在填写关于客户端的信息表格,我最终将 PATCH/PUT/POST 到该资源。当用户填写表格时,我可能希望定期将他们部分完成的更新表示发送到服务器,以便我可以显示他们输入的实时验证(例如,“那个用户名已经被占用”,“那个密码是太短”)。

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

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

2 回答 2

5

一些选项

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

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

每当你必须做一些感觉像 RPC 的事情时使用 POST 使用 GET 进行计算等事情,除非你的输入很大,在这种情况下使用 POST

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

这是我正在考虑的:

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

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

于 2012-05-18T01:39:33.013 回答
0

第三个选项是在客户端上实现验证功能。然后,此函数将在需要特定信息时发送特定请求。

例如,您实际上不需要发送请求来检查密码是否太短。但是您可以发送一个请求来检查用户名是否存在。

这就是使用 Ajax 进行验证的方式,顺便说一句,它使用的是 Restful API (HTTP):)

于 2012-05-18T00:30:24.147 回答