REST API 默认返回 JSON,因其轻量、易读、解析快,且被浏览器、移动端及主流框架原生支持;XML 仅适用于对接遗留系统等特定场景,应通过 Accept 头协商格式,保持响应结构一致。
REST API 默认返回 JSON,这是当前最主流、最推荐的做法。
JSON 格式轻量、易读、解析快,几乎所有编程语言都有成熟且安全的原生支持。浏览器端 JavaScript 直接内置解析能力,移动端和现代服务端框架(如 Spring Boot、Express、Django REST)也默认优先处理 JSON。相比之下,XML 更冗长、解析开销大、容易引入命名空间或 DTD 安全问题(如 XXE 攻击)。
仅在明确对接遗留系统、政府或金融行业特定规范(如某些 SOAP 过渡系统、ISO 20022 报文)、或客户合同强制要求时才提供 XML 支持。不建议为新项目主动设计 XML 接口。
Accept: application/xml 才返回 XML/api/users.json 和 /api/users.xml),违背 REST 的资源导向原则用 HTTP 内容协商(Content Negotiation)实现灵活响应,而非硬编码格式。服务器根据 Accept 请求头决定返回格式,同时保证同一资源 URL 行为一致。
application/json(当 Accept 不匹配或未提供时)Accept: application/json, text/xml;q=0.9 → 返回 JSON;Accept: application/xml → 返回 XMLContent-Type(如 application/json; charset=utf-8),不可省略保持响应结构一致性比格式选择更重要。无论 JSON 还是 XML,都应统一错误格式、分页字段、时间格式(ISO 8601)、空值处理方式。
{"error": "not_found", "message": "User not found", "status": 404}
"created_at": "2025-05-20T08:30:00Z"),避免 XML 中的 xs:dateTime 或 JSON
中的时间戳数字引发歧义user_name,XML 用 userName)基本上就这些。新项目直接上 JSON,留好协商扩展性,别为了“兼容”提前加 XML,除非真有甲方签字画押的要求。