RESTful Web服务,用于数据检索的POST

时间:2016-09-01 15:13:26

标签: web-services rest

我正在考虑为现有的基于HTTP的纯Web服务创建REST API。

到目前为止,客户端可以向服务发送HTTP POST请求以检索数据。这些请求的HTTP正文 包含类似查询参数的内容。它是一种XML方言。这些查询的大小通常超过30 kB。

此外,查询还需要加密。因此,查询参数不能通过HTTP GET作为查询字符串进行传输。

我的问题是:是否违反了REST原则" POST更改服务器状态",如果我使用HTTP POST检索数据?

每次检索操作(成功与否)后,都会将日志条目添加到数据库中的日志表中。

更新

  

因此,查询参数不能被HTTP GET作为查询字符串传输

我从评论和答案中了解到,查询字符串已加密。但是不建议在查询字符串中传输安全敏感数据。

1 个答案:

答案 0 :(得分:3)

虽然技术上违反了REST,但如果您的查询参数很大,听起来就像是这样,那么POST可能是唯一的方法。 此外,并非所有客户都支持使用身体参数进行GET。

ElasticSearch还允许POST查询:

  

HTTP GET和HTTP POST都可用于执行body搜索。由于并非所有客户端都支持GET with body,因此也允许POST。   https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-body.html

与Azure Search API一样 https://msdn.microsoft.com/en-gb/library/azure/dn798927.aspx

我试图做的一点是,虽然它违反了REST原则,但有时候规则会被打破。
您总是可以将其视为POSTing(创建)查询; - )

作为附注:GET请求/查询字符串

HTTPS会话的整个文本由SSL保护/加密 这包括查询和标题 在这方面,POST和GET将完全相同。