text/plain与application/json的区别、适用场景及NextJS请求疑问
text/plain 与 application/json 的区别及适用场景
一、核心差异
- 语义与格式约定:
text/plain:仅声明内容是纯文本,无任何结构化格式要求,就是普通字符串。application/json:明确指定内容是符合JSON规范的结构化数据,必须遵循键值对、数组等JSON格式规则。
- 服务端解析行为:
- 大部分后端框架(包括NextJS API Routes)会根据
Content-Type自动处理请求体:application/json类型的请求,服务端会自动把字符串化的body解析成JSON对象;text/plain类型则不会做解析,直接返回原始字符串。
- 大部分后端框架(包括NextJS API Routes)会根据
二、各自适用场景
优先用 application/json 的情况
- 前后端传递结构化数据:比如提交表单数据、获取带层级的列表/详情、传递配置参数等,只要是有明确键值结构的数据,都用这个类型。
- 需要服务端自动解析的场景:像你在NextJS里的需求,希望API Routes直接拿到解析好的JSON对象,不用自己手动处理字符串转JSON的步骤。
适合用 text/plain 的情况
- 传递无结构的纯文本:比如一段日志内容、简单的消息提示、用户输入的纯文本(不需要拆分结构的)。
- 不需要服务端解析格式的场景:比如只是传递一段简单的文本指令,服务端直接读取原始字符串就能处理。
三、NextJS API Routes 中的实际表现
- 当你手动设置
Content-Type: application/json时,哪怕请求body是JSON.stringify()处理后的字符串,NextJS会自动把req.body解析成JSON对象,直接就能使用。 - 如果不设置
Content-Type,请求工具/浏览器默认会用text/plain,这时候req.body就是原始的字符串,要是内容本身是JSON格式,你得手动调用JSON.parse(req.body)来转换成对象。
内容的提问来源于stack exchange,提问作者Humanoid Mk.12
相关产品推荐
相关产品推荐

