You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

REST API获取数据:GET与POST选哪个?哪种更规范?

REST API查询互动用户列表的请求方式选择

按标准REST API设计,GET请求用于获取数据,POST请求用于创建或更新资源,比如获取全量用户列表用GET /users。

现有场景:平台已有数十亿用户,应用支持用户发帖、评论、点赞和关注帖子。当需要获取某热门帖子(拥有数千互动用户)的互动用户列表时,需传入postId作为查询条件,同时要传入pageNumber和pageSize做分页处理,避免前端负载过大。

两种请求构造方式

GET 请求

GET /users?postId=123&pageNumber=1&pageSize=10

POST 请求

POST /users
Content-Type: application/json

{
  "postId": 123,
  "pageNumber": 1,
  "pageSize": 10
}

两种方式的利弊分析

  • GET方式:完全符合REST查询数据的规范,请求可被缓存、支持书签收藏,语义清晰易懂。参数暴露在URL中是事实,但postId属于公开的帖子标识(热门帖子本身是公开可访问的),不存在敏感信息泄露问题;且当前参数数量少,远达不到URL长度限制的阈值。
  • POST方式:参数藏在请求体中不会出现在URL里,但违背了REST用GET获取数据的语义惯例,无法被浏览器或CDN缓存,也不符合用户刷新、后退页面的默认行为逻辑,反而会增加前后端的处理复杂度。

推荐方案

优先选择GET方式,原因如下:

  1. 语义匹配:获取数据的操作天然适配GET请求,符合REST设计原则,团队协作时无需额外解释,降低沟通成本。
  2. 性能更优:GET请求支持缓存机制,对于热门帖子的互动列表查询,缓存能大幅减少服务器重复查询的压力,提升响应速度。
  3. 体验更好:支持浏览器书签、分享等功能,用户可以直接保存或分享查询链接,操作更便捷。
  4. 安全性无虞:postId并非敏感数据,暴露在URL中不会带来安全风险,只有涉及隐私数据时才需要考虑隐藏参数,当前场景不适用。

另外,可以优化API路径让语义更精准,比如调整为GET /posts/{postId}/interactors?pageNumber=1&pageSize=10,这样明确指向“某帖子的互动用户列表”,比泛泛的/users更符合REST资源层级的设计逻辑。

内容的提问来源于stack exchange,提问作者Hoang Minh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 01:45:32