当前位置: 首页 > news >正文

HTTP Content-Type介绍(x-www-form-urlencoded、multipart/form-data、text/plain、text/html、octet-stream)内容类型

文章目录

  • 一文搞懂 HTTP Content-Type
  • 一、什么是 Content-Type?
  • 二、为什么 Content-Type 很重要?
  • 三、常见 Content-Type 类型
    • 1. application/json(最常用)
    • 2. application/x-www-form-urlencoded
    • 3. multipart/form-data
    • 4. text/plain
    • 5. text/html
    • 6. application/xml
    • 7. application/octet-stream
  • 四、请求 vs 响应中的 Content-Type
    • 1. 请求中的 Content-Type
    • 2. 响应中的 Content-Type
  • 五、Content-Type vs Accept
  • 六、常见坑点
    • 1. 忘记设置 Content-Type
    • 2. JSON 写成 form
    • 3. 字符编码问题
    • 4. 文件上传必须用 multipart/form-data
  • 七、实际开发建议
    • 1. 统一使用 JSON(推荐)
    • 2. 接口文档必须写清楚
    • 3. 后端要做容错处理
  • 八、总结

一文搞懂 HTTP Content-Type

在日常开发中,我们几乎每天都会接触 HTTP 协议,而Content-Type是其中最基础却又最容易被忽视的一个字段。很多接口问题、乱码问题、跨语言调用问题,其实都和它有关。

这篇文章带你彻底搞懂Content-Type的作用、常见类型,以及实际开发中的注意事项。


一、什么是 Content-Type?

Content-Type是 HTTP 头(Header)中的一个字段,用来指明请求或响应体的数据类型(媒体类型,MIME type)

简单来说,它回答的是一个问题:

👉 “这段数据是什么格式?”

例如:

Content-Type: application/json

表示 Body 中的数据是 JSON 格式。


二、为什么 Content-Type 很重要?

如果没有Content-Type,接收方就无法正确解析数据。

举个例子:

  • 你发送的是 JSON,但没写Content-Type
  • 服务端可能按表单格式解析
  • 结果:解析失败 / 参数为空 / 报错

👉 本质上就是“协议不一致”。


三、常见 Content-Type 类型

1. application/json(最常用)

Content-Type: application/json

用于传输 JSON 数据:

{"name":"Tom","age":20}

📌 使用场景:

  • RESTful API
  • 微服务通信
  • 前后端分离

2. application/x-www-form-urlencoded

Content-Type: application/x-www-form-urlencoded

数据格式类似 URL 参数:

name=Tom&age=20

📌 使用场景:

  • HTML 表单默认提交方式
  • 传统 Web 应用

3. multipart/form-data

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary

用于上传文件:

------boundary Content-Disposition: form-data; name="file"; filename="a.txt" Content-Type: text/plain (file content)

📌 使用场景:

  • 文件上传
  • 图片上传

4. text/plain

Content-Type: text/plain

表示纯文本:

Hello World

📌 使用场景:

  • 简单文本接口
  • 调试接口

5. text/html

Content-Type: text/html

表示 HTML 页面:

<h1>Hello</h1>

📌 使用场景:

  • 浏览器页面响应

6. application/xml

Content-Type: application/xml

用于 XML 数据:

<user><name>Tom</name></user>

📌 使用场景:

  • 老系统
  • SOAP 服务

7. application/octet-stream

Content-Type: application/octet-stream

表示二进制数据(通用类型):

📌 使用场景:

  • 文件下载
  • 不确定类型的数据

四、请求 vs 响应中的 Content-Type

1. 请求中的 Content-Type

👉 告诉服务器:我发送的数据是什么格式

例如:

POST /api/user Content-Type: application/json

2. 响应中的 Content-Type

👉 告诉客户端:你收到的数据是什么格式

例如:

HTTP/1.1 200 OK Content-Type: application/json

五、Content-Type vs Accept

很多人会混淆这两个字段。

Header作用
Content-Type我发送的是什么
Accept我希望接收什么

示例:

Accept: application/json

表示客户端希望服务器返回 JSON。


六、常见坑点

1. 忘记设置 Content-Type

表现:

  • 后端收不到参数
  • JSON 解析失败

2. JSON 写成 form

错误:

Content-Type: application/x-www-form-urlencoded

但 Body 是 JSON:

{"name":"Tom"}

👉 一定会解析失败


3. 字符编码问题

Content-Type: text/html; charset=UTF-8

如果不指定 charset,可能导致乱码。


4. 文件上传必须用 multipart/form-data

很多人误用:

application/json

👉 文件上传一定要用:

multipart/form-data

七、实际开发建议

1. 统一使用 JSON(推荐)

现代系统建议统一:

Content-Type: application/json

优点:

  • 可读性强
  • 跨语言支持好
  • 与 RESTful 风格一致

2. 接口文档必须写清楚

比如:

Content-Type:application/json

否则调用方容易踩坑。


3. 后端要做容错处理

例如:

  • 自动识别 JSON / form
  • 给出清晰错误提示

八、总结

一句话总结:

Content-Type 决定了数据如何被解析。

记住三点就够了:

  1. 它定义数据格式
  2. 请求和响应都可以使用
  3. 错了就会解析失败
http://www.jsqmd.com/news/701113/

相关文章:

  • LightGlue深度解析:从自适应剪枝到高速特征匹配的实战指南
  • 地标识别:机器学习入门实战指南
  • AI短视频引擎:从文本到视频的自动化内容生成技术解析
  • Reqwest 兼顾简洁与高性能的现代 HTTP 客户端
  • 碧蓝航线自动化脚本终极指南:解放双手的全能助手
  • 《100个“反常识”经验11:删了30万行数据表还是那么大?》
  • 5分钟终极指南:一键解密网易云NCM音乐文件,免费高效转换音频格式
  • 【GPU程序员紧急预警】CUDA 13默认启用PTX JIT缓存机制,导致A100集群批量core dump?3步定位+2行代码修复方案
  • 【计算机毕业设计】基于Springboot的城镇保障性住房管理系统+LW
  • ARM CP15协处理器详解:寄存器配置与系统控制
  • 基于大语言模型的智能购物助手:从Agent原理到工程实践
  • 机器学习核心概念与实践指南
  • Jenkins Docker构建代理:标准化CI/CD环境与容器化实践指南
  • 深度解析:Zotero PDF Translate插件版本兼容性困境与架构级解决方案
  • NHSE:3步掌握《动物森友会》存档编辑,打造你的完美岛屿
  • 《每日一命令11:ps——一眼看穿所有进程》
  • 神经网络训练中的早停机制:原理与实践指南
  • KMS_VL_ALL_AIO智能激活工具:Windows与Office一键永久激活终极指南
  • Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案
  • 人工智能篇--- SSM 模型架构
  • 机器学习新手必备工具链与实战技巧
  • 抖音下载器终极指南:高效批量下载无水印视频的完整开源方案
  • Python实现多层感知机(MLP)手写数字识别实战
  • 支持向量机(SVM)原理与Python实战指南
  • Windows窗口管理效率革命:如何用AltSnap告别繁琐的标题栏点击
  • 机器学习堆叠泛化(Stacking)原理与Python实现
  • AI驱动的开发者智能助手:意图驱动的工程化任务自动化
  • jQuery Prettydate:实现日期格式化与美化
  • c++如何实现跨平台的文件读写进度监听器回调机制【实战】
  • 基于Git与纯文本构建个人知识库:极简笔记系统实践指南