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

执行服务器端验证的正确REST方法是什么?,rest,Rest,如果我不想更新资源,但只想检查某些内容是否有效(在我的例子中是SQL查询),那么正确的REST方法是什么 我还没有得到资源。我还没有发布、发布或修补任何东西。我只是将表单的一部分发送回去进行验证,这只有服务器才能完成。另一个等价物是检查密码是否符合只有域才能知道的复杂性要求,或者可能存在其他用例 发送对象,验证,返回响应,继续表单。使用REST。有什么想法吗?我是不是遗漏了什么;关于通过REST创建验证端点的主题,有以下几个方面: 在您的情况下,GET请求似乎就足够了 HTTP GET方法用于读

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

我还没有得到资源。我还没有发布、发布或修补任何东西。我只是将表单的一部分发送回去进行验证,这只有服务器才能完成。另一个等价物是检查密码是否符合只有域才能知道的复杂性要求,或者可能存在其他用例

发送对象,验证,返回响应,继续表单。使用REST。有什么想法吗?我是不是遗漏了什么;关于通过REST创建验证端点的主题,有以下几个方面:

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

HTTP GET方法用于读取(或检索)资源的表示形式。在“happy”(或non-error)路径中,GET返回XML或JSON表示形式和200(OK)的HTTP响应代码。在错误情况下,它通常返回404(未找到)或400(错误请求)

为了验证SQL查询,您可以使用GET请求来获取查询的有效状态,可能需要使用查询参数来实现这一点

GET:api/validateQuery=“从表中选择*

返回:

  • 200(确定):有效查询
  • 400(格式错误):查询无效
  • 404(未找到):查询有效但不返回结果(如果您计划执行查询)

我认为这种端点最好作为POST请求。如中所定义,POST请求可用于

向数据处理进程提供数据块,如输入HTML表单的字段

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

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

询问表示是否有效应该不会对服务器产生任何副作用;所以应该是

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

如果要验证的表示不能在URI中表示,那么需要将其放入消息体中

在定义的方法中,只有适用

本规范范围之外的其他方法已经标准化,可用于HTTP。所有此类方法应在IANA维护的“超文本传输协议(HTTP)方法注册表”中注册,如第8.1节所定义

这给了你很多选择。对于这种情况,除非您找到一个完美的匹配,或者找到一个接受实体并足够接近的方法,否则我不会对它们进行处理


所以可能,这是定义在;我倾向于避开方法,因为我不喜欢将“远程Web内容创作操作”的规范延伸到他们的职权范围之外。

GET在这里似乎是一个不切实际的解决方案,查询可能会很长很复杂,我不认为这是你想要进入URL的类型,出于各种原因。在这种情况下,在请求体中加密查询的POST请求似乎更合适。有一个端点可以确认数据库的内部结构,这会打开一整罐蠕虫,因此如果您担心安全性,我会确保为您的验证端点添加授权:是的,我会根据另一个答案倾向于POST。我并不真的担心(在本例中)包含查询的URL,但总体而言,POST似乎有更多的优势,更接近定义的用法。其他答案很好(如投票所示),但我认为这是最全面的。