0

我正在开发一个 RESTful Web 应用程序。现在我想扩展读取 (GET) 请求以处理类似 SQL 的查询,但由于所有特殊字符(“”、“/”、“<”、“>”、 “{“, “}“, ETC。)。我已经读过在 GET 请求中使用消息正文不是一个好主意。所以目前我看到的唯一选择是使用 POST 请求。但是我再说一遍,这也不是一个好的解决方案,因为我会使用 POST 进行读取操作。根据 REST 原则,读取应该由 GET 请求完成,而 POST 只能用于操作数据。

你怎么看?向我的 Web 应用程序发送类似 SQL 的查询的最佳方式是什么?

非常感谢

4

2 回答 2

2

使用 CGI::escape("select * from NEVER_DO_SUCH_THINGS where SQL_INJECTION > 'unsafe'")

于 2010-12-07T11:20:19.933 回答
0

有关如何将查询操作填充到 URI 中的一个示例,请参阅OData URI 约定。

但是,您过度限制了 POST 的使用。HTTP 方法的想法是,当请求的特征符合 GET、PUT 和 DELETE 的特征时,您应该使用它们。如果特征不匹配,您不得使用它们。但是,POST 是一种通配符方法,可用于任何请求。

不要求 POST 必须以任何方式写入、更新或操作数据。通过告诉客户端它需要使用 POST 方法,您只是没有向客户端做出任何关于服务器行为的承诺。

使用 POST 提交用于查询的数据块没有任何问题。缺点是 POST 的响应没有被缓存,因此您无法利用它。

有许多混合方法,其中一种是 POST 查询参数并让服务器创建一个表示查询的新临时资源,然后返回重定向,以便客户端获取临时查询资源。

于 2010-12-07T13:51:02.547 回答