Content-Type
指定 Body 的媒体资源类型,如果是请求头,则代表请求体的资源类型,如果是响应头,则代表响应体的资源类型。
资源类型通过 MIME(Multipurpose Internet Mail Extensions
)进行表示,以此为基础的 npm 库 mime-db1 也常用在各个 Node.js 服务器框架。
常见的文件拓展名与 MIME Type 可见 MIME Types2。
1. 请求头中的 Content-Type
当请求头中含有 Content-Type
时,它指明 Request Body 的媒体资源类型,此时一般为 POST 请求。
当前端向后端请求 API 接口时,请求体一般为 JSON 数据类型,此时需要配置 Content-Type: application/json
。
除此之外,在 API 中常见以下几种请求头中的 Content-Type:
aplication/json
:请求体为 JSONapplication/x-www-form-urlencoded
:请求体为以&
分割的字符串,如a=3&b=4
multipart/form-data
:请求体以 Boundary 分割
2. 响应头中的 Content-Type
当响应头中含有 Content-Type
时,它指明 Response Body 的媒体资源类型。
因为我们可以通过 HTTP 去请求各种各样的资源,因此 Content-Type 基本上可以是所有 MIME 类型。
而在前端中,涉及到的响应头中的 Content-Type 为以下几种:
text/html
text/css
application/javascript
image/png
image/jpeg
image/webp
image/svg xml
3. 实例
我在 Apifox3 中演示了知名网站关于强缓存与协商缓存的应用。见文档4。
4. 作业
- 你接触过哪些 MIME Type
- 你在 HTTP Header 中见过那些 Content-Type
参考资料
[1]
mime-db:https://github.com/jshttp/mime-db
[2]
MIME Types:https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types
[3]
Apifox:https://www.apifox.cn/a1shanyue
[4]
文档:https://www.apifox.cn/a1shanyue