找回密码
立即注册
搜索
发回帖 发新帖

6430

积分

0

好友

813

主题
发表于 15 小时前 | 查看: 3| 回复: 0

最近在知乎上看到一个挺有意思的问题:公司规定所有接口都用 POST 请求,为什么?

说实话,我自己对这个问题也蛮有感触。2019 年,我接过一个从零开始搭建的微服务项目,当时第一次系统接触接口设计规范,比如大家耳熟能详的 RESTful 规范,后来也把它用到了那个项目里。

今天再翻到这个问题,有了一些新的理解,顺便回顾一下 get与post的请求的一些区别:

  1. POST 更安全:不会作为 URL 的一部分,不会被缓存,也不会存进服务器日志和浏览器历史记录。
  2. POST 发送的数据量更大,因为 GET 有 URL 长度限制。
  3. POST 能发送更多数据类型,GET 只能发送 ASCII 字符。
  4. POST 比 GET 慢。
  5. post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作。
  6. GET 请求静态资源会命中缓存,请求数据则不会。

从这些区别来看,POST 在大数据量、非 ASCII 内容的场景下优势明显,而 GET 更适合获取静态资源、简单查询这类接口。

我个人的开发习惯是:简单查询用 GET,增、删、改和复杂查询用 POST,但不会像提问者的公司那样全部接口都走 POST。

网友 @程墨Morgan 提出,如果由他来定规范,会按照业界最佳实践来:

幂等且不修改服务器状态的用 GET,幂等且修改服务器状态的用 PUT,不幂等且修改服务器状态的用 POST。

知乎回答:程墨Morgan谈接口规范与业界最佳实践

另一个知友 @苏莉安 的观点更直接:全 POST 说白了就是为了迁就低水平、不思进取的架构师和前后端程序员们。他还提到,如果用 POST 替代 PUT、DELETE、PATCH 等语义清晰的 REST 方法,甚至觉得 PUT /api/object 看不懂、只能看懂 POST /api/updateObject,那团队确实只配一个 POST 打天下。

知乎回答:苏莉安谈全POST接口的争议

那么,如果由你来设计公司的 API 规范,你会规定所有接口都用 POST 吗?为什么?

这个问题本身没有标准答案,如果你也有过类似的接口规范争论,不妨来 云栈社区 和其他开发者一起聊聊。

来源:www.zhihu.com/question/336797348




上一篇:MediaCrawler 开源爬虫:一键抓取小红书、抖音、B站等7大平台公开数据
下一篇:Demand Gen广告要不要勾选浏览型转化?一个月实测经验
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-10 20:09 , Processed in 0.064668 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表