news 2026/6/10 15:58:38

RESTful API 请求和响应格式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RESTful API 请求和响应格式

RESTful API 的请求和响应格式详解

在 RESTful API 中,请求和响应的格式设计直接影响 API 的易用性、一致性和可维护性。优秀的格式规范能让前后端开发者快速理解接口行为,减少沟通成本。

1. 总体原则
  • 内容类型统一:几乎全部使用JSON(application/json)作为请求和响应的数据格式。
  • 结构一致:成功响应和错误响应都采用统一的包裹结构,便于客户端统一处理。
  • 清晰、可读:字段命名规范,时间格式标准,返回必要元信息。
  • 避免裸数据:不要直接返回数组或单个对象,而是用包裹对象提供上下文。
2. 请求格式(Request)
2.1 常见 Content-Type
HTTP 方法典型 Content-Type说明
POST / PUT / PATCHapplication/json最常用,发送 JSON 数据
文件上传multipart/form-data上传头像、附件等
表单提交application/x-www-form-urlencoded传统表单(较少用)
2.2 请求体(Body)示例

创建用户(POST /users)

{"name":"张三","email":"zhang@example.com","password":"secret123","age":28,"roles":["user","admin"]}

部分更新用户(PATCH /users/123)

{"name":"张三丰","age":30}

(只包含需要修改的字段)

查询参数(Query Parameters)用于 GET 请求过滤

GET /articles?status=published&tag=rest&sort=-created_at&page=2&limit=20
2.3 请求头(Headers)常用字段
Header示例值说明
Content-Typeapplication/json请求体格式
Acceptapplication/json期望响应格式
AuthorizationBearer eyJhbGciOiJIUzI1NiIs…JWT 或其他认证令牌
X-API-Keyyour-api-keyAPI Key 认证
3. 响应格式(Response)
3.1 成功响应统一结构(推荐)

方案一:通用包裹(最常用)

{"data":{// 主要数据"id":123,"name":"张三","email":"zhang@example.com","created_at":"2025-12-25T10:00:00Z"},"meta":{// 元信息(可选)"timestamp":"2025-12-25T10:00:01Z","request_id":"abc123-def456"}}

方案二:集合响应(列表 + 分页)

{"data":[{"id":1,"title":"REST 教程"},{"id":2,"title":"API 设计"}],"meta":{"pagination":{"total":156,"page":2,"limit":20,"total_pages":8},"timestamp":"2025-12-25T10:00:01Z"}}

方案三:无数据内容(如 DELETE 成功)

  • 返回204 No Content(无响应体,最推荐)
  • 或返回 200 + 简单结构:
{"data":null,"meta":{"message":"用户删除成功"}}
3.2 错误响应统一结构(非常重要!)

推荐错误格式(Problem Details - RFC 7807 标准)

{"error":{"code":"VALIDATION_ERROR",// 业务错误码(字符串)"message":"请求参数验证失败",// 给开发者的友好提示"details":[// 具体字段错误(可选){"field":"email","issue":"already_exists","message":"该邮箱已被注册"},{"field":"age","issue":"invalid_range","message":"年龄必须在 18-100 之间"}]}}

响应头

  • Content-Type: application/json
  • HTTP 状态码:400 Bad Request、422 Unprocessable Entity 等

常见错误状态码与 code 对应

HTTP 状态码推荐 error.code场景
400BAD_REQUEST参数格式错误
401UNAUTHORIZED未登录
403FORBIDDEN无权限
404NOT_FOUND资源不存在
409CONFLICT资源冲突(如用户名重复)
422VALIDATION_ERROR业务校验失败(最常用)
429TOO_MANY_REQUESTS限流
500INTERNAL_SERVER_ERROR服务器异常
3.3 字段命名与数据格式规范
项目推荐规范示例
字段命名snake_case(下划线)或 camelCaseuser_iduserId(统一即可)
时间格式ISO 8601(UTC)“2025-12-25T10:00:00Z”
布尔值true / false“is_active”: true
空值null(避免空字符串)“description”: null
枚举字符串常量“status”: “published”
4. 完整示例对比

请求

POST /api/v1/users HTTP/1.1 Content-Type: application/json Authorization: Bearer xyz123... { "name": "李四", "email": "li@example.com", "password": "123456" }

成功响应(201 Created)

HTTP/1.1 201 Created Content-Type: application/json Location: /api/v1/users/456 { "data": { "id": 456, "name": "李四", "email": "li@example.com", "created_at": "2025-12-25T10:00:00Z" }, "meta": { "timestamp": "2025-12-25T10:00:01Z" } }

错误响应(422)

HTTP/1.1 422 Unprocessable Entity Content-Type: application/json { "error": { "code": "VALIDATION_ERROR", "message": "参数验证失败", "details": [ { "field": "email", "issue": "invalid_format", "message": "邮箱格式不正确" } ] } }
5. 总结口诀

请求简洁 JSON,响应统一包裹,错误结构化提示,状态码要准确

遵循这些格式规范,你的 RESTful API 将更加专业、一致,便于前端统一封装错误处理和数据解析。

如果你想看特定框架(如 Spring Boot、Express、FastAPI)的响应封装代码实现,或者 OpenAPI/Swagger 如何描述这些格式,欢迎继续问!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 10:49:20

RESTful API 进阶

RESTful API 进阶话题详解 掌握基础后,进阶阶段聚焦于成熟度提升、生产级架构、文档化、安全与性能优化,以及与其他技术的对比。以下是 2025 年最实用的进阶内容。 1. HATEOAS(Hypermedia as the Engine of Application State) …

作者头像 李华
网站建设 2026/6/10 12:25:53

终极指南:3步解决Gpredict卫星追踪的常见痛点[特殊字符]

你是否曾经遇到过这些问题?📡 卫星信号时断时续,错过最佳通信窗口?面对复杂的轨道参数一头雾水?设备设置总是出问题?别担心,今天我们就来一一解决这些困扰无数卫星爱好者的难题! 【免…

作者头像 李华
网站建设 2026/6/10 12:25:42

突破硬件壁垒:在Docker容器中运行macOS系统的完整实践指南

突破硬件壁垒:在Docker容器中运行macOS系统的完整实践指南 【免费下载链接】macos OSX (macOS) inside a Docker container. 项目地址: https://gitcode.com/GitHub_Trending/macos/macos 你是否曾因缺少苹果设备而无法体验macOS系统?或者需要在测…

作者头像 李华
网站建设 2026/6/10 12:35:32

深度解析MoveIt2:5大核心技术助你玩转机器人运动规划

深度解析MoveIt2:5大核心技术助你玩转机器人运动规划 【免费下载链接】moveit2 :robot: MoveIt for ROS 2 项目地址: https://gitcode.com/gh_mirrors/mo/moveit2 在机器人技术飞速发展的今天,机器人运动规划已成为智能机器人系统的核心能力。Mov…

作者头像 李华
网站建设 2026/6/10 14:17:14

GrasscutterTool 3.1.5:原神开发者的智能指令生成解决方案

GrasscutterTool 3.1.5:原神开发者的智能指令生成解决方案 【免费下载链接】GrasscutterTool-3.1.5 OMG,leak!!!! 项目地址: https://gitcode.com/gh_mirrors/gr/GrasscutterTool-3.1.5 在搭建原神私有服务器的过程中,开发者常常面临指令生成的效…

作者头像 李华
网站建设 2026/6/10 13:08:20

VRCX:重塑VRChat社交体验的智能管理平台

VRCX:重塑VRChat社交体验的智能管理平台 【免费下载链接】VRCX Friendship management tool for VRChat 项目地址: https://gitcode.com/GitHub_Trending/vr/VRCX 在VRChat的虚拟世界中,你是否曾因好友改名而认不出对方?是否因错过重要…

作者头像 李华