post - 使用 POST 而不是 GET 的 REST API

标签 post get rest

假设某个服务提供了一些我可以像这样使用的功能:

GET /service/function?param1=value1&param2=value2

我可以将它与 POST 查询一起使用,这样说对吗?

POST /service/function { param1 : value1, param2 : value2 }

这两个查询相同吗?在任何情况下我都可以使用第二种变体吗?或者文档应该明确说明我可以同时使用 GET 和 POST 查询?

最佳答案

出于以下原因,我将 POST 正文用于任何重要的业务线应用程序:

  1. 安全性 - 如果我们将 GET 与查询字符串和 https 一起使用,则查询字符串可以保存在服务器日志中并作为引用链接转发。现在,服务器/网络管理员以及用户离开应用程序后前往的下一个域都可以看到这两个域。因此,如果我们发送包含 secret PII 数据(例如客户姓名)的查询,这可能是不需要的。
  2. URL 最大长度 - 不是一个大问题,但某些浏览器对长度有限制。因此,如果我们的 URL 中有多个项目,例如查询、分页、要返回的字段等...
  3. 默认情况下不缓存 POST。有人说需要缓存;有人说需要缓存;有人说需要缓存。但是,在缓存超时之前,针对该特定客户的该特定对象的完全相同的搜索条件集出现的频率是多少?

顺便说一句,我还将要返回的字段放入我的 POST 正文中,因为我可能不希望公开我的字段名称。安全就像洋葱;它有很多层,让我们哭泣!

关于post - 使用 POST 而不是 GET 的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637459/

相关文章:

http - 是否可以在 NSIS 中使用 http get 和 http post?

mysql - 有什么方法可以获取上次更新的行 ID

iOS - JSON 数据不工作

python - Flask Python REST API 在接收 POST 时设置可选 JSON 参数

php - 在 PHP 和 ASP.net 中发布

mysql - 在提交表单中使用 php 的表名

php - href 超链接为 POST

java - 使用 org.apache.http 发送带有 SOAP 操作的 HTTP Post 请求

java - JAX-RS、GlassFish、Eclipse。一个简单的网络服务不起作用

json - API 库中的后台获取