执行服务器端验证的正确REST方法是什么?

问题描述 投票:1回答:3

如果我不想更新资源,但我只想检查某些内容是否有效(在我的情况下,是一个SQL查询),那么正确的REST方法是什么?

我还没有获得资源。我还没有PUT,POST,或修补任何东西。我只是将表单的一部分发送回来进行验证,只有服务器可以做。另一个等价物是检查密码是否符合只能由域知道的复杂性要求,或者可能还有其他用例。

发送对象,验证,返回响应,继续表单。使用REST。有任何想法吗?我错过了什么吗?

rest
3个回答
2
投票

执行服务器端验证的正确REST方法是什么?

询问表示是否有效应该对服务器没有副作用;因此它应该是safe

如果您要验证的表示可以在URI中表示,那么,您应该更喜欢使用GET,因为它是最简单的选择,并为您提供缓存答案的最佳语义。例如,如果我们尝试使用网站为文本(例如XML或JSON验证器)创建验证API,那么我们可能会有一个带有文本区域控件的表单,并构造我们的标识符需要通过处理表单输入。

如果您要验证的表示无法在URI中表示,那么您将需要将其放入邮件正文中。

RFC 7231定义的方法中,只有POST是合适的。

在本说明书范围之外的其他方法已被标准化以用于HTTP。所有这些方法都应该在IANA维护的“超文本传输​​协议(HTTP)方法注册表”中注册,如第8.1节中所定义。

HTTP method registry为您提供了很多选择。对于这种情况,我不会打扰他们,除非你找到一个完美的匹配,或接受一个身体并且足够接近的safe方法。

也许REPORT,在RFC 3253中定义;我倾向于避开WebDAV方法,因为我不习惯在他们的职权范围之外扩展“远程Web内容创作操作”的规范。


1
投票

TLDR;围绕通过REST创建验证端点的主题有一个duplicate question

在您的情况下,GET请求似乎就足够了。

HTTP GET方法用于读取(或检索)资源的表示。在“快乐”(或非错误)路径中,GET以XML或JSON格式返回表示形式,并返回HTTP响应代码200(OK)。在错误情况下,它通常返回404(NOT FOUND)或400(BAD REQUEST)。

restapitutorial.com

为了验证您的SQL查询,您可以使用GET请求来获取查询的有效状态,可能使用查询参数来实现此目的。

GET:api / validateQuery?query =“SELECT * FROM TABLE”

返回:

  • 200(OK):有效查询
  • 400(MALFORMED):无效查询
  • 404(未找到):查询有效但不返回任何结果(如果您计划执行查询)

1
投票

我认为这种类型的端点最适合作为POST请求。正如spec中所定义的,可以使用POST请求

将数据块(例如输入HTML表单的字段)提供给数据处理过程

根据SQL查询的复杂性和任意性,在我的另一篇文章中建议使用GET是误导和不切实际的。

© www.soinside.com 2019 - 2024. All rights reserved.