博主头像
<CodeEra />

心存敬畏 行有所止

前端传参方式指南:Query、Params、Body 的区别

📌 核心概念

1. Path Parameters(路径参数)

  • 用途:标识唯一资源(如 RESTful API 的 ID)。
  • 示例

    GET /users/123      # 获取 ID=123 的用户
  • 特点

    • 直接嵌入 URL 路径。
    • 语义化强(如 /users/:id)。

2. Query Parameters(查询参数)

  • 用途:附加筛选条件(如分页、搜索)。
  • 示例

    GET /users?name=John&page=1
  • 特点

    • 位于 ? 后,格式为 key=value
    • 暴露在 URL 中,不适合敏感数据。

3. JSON Body(主流请求体格式)

  • 用途:提交结构化数据(如表单、复杂参数)。
  • 示例

    POST /users
    Content-Type: application/json
    Body: { "name": "John", "age": 25 }
  • 特点

    • 用于 POST/PUT/PATCH 请求。
    • 支持嵌套数据,替代传统的 x-www-form-urlencoded

🚀 最佳实践总结

场景推荐方式示例
获取资源标识Path ParamsGET /users/123
简单查询条件Query ParamsGET /users?name=John
复杂数据提交JSON BodyPOST /users { "name": "John" }
传统表单提交URL Encoded(仅兼容旧系统)POST /login name=John&age=25

❗ 常见误区

  1. GET 请求用 JSON Body

    • ❌ 不推荐:违反 HTTP 规范,兼容性差。
    • ✅ 替代方案:复杂查询改用 POST + JSON。
  2. 敏感数据用 Query Params

    • ❌ 不安全:参数暴露在 URL 和浏览器历史中。
    • ✅ 改用 POST + JSON Body。

📚 学习要点

  1. Path ParamsQuery Params 都是通过 URL 传参,但用途不同。
  2. 现代 API 优先使用 JSON Body,淘汰 x-www-form-urlencoded
  3. 遵循 RESTful 设计原则

    • GET 用于获取数据(Path/Query)。
    • POST/PUT/PATCH 用于提交数据(JSON Body)。

🔗 扩展阅读

发表新评论