文章目录
- http
- MIME(Content-Type)
- 原始格式:raw
- 文本:text/xxx
- ==text/plain==
- text/html
- text/css
- text/javascript
- text/xml
- 二进制:application/xxx
- ==application/octet-stream==
- binary
- msgpack
- application/json
- GraphQL
- 案例:
- application/xml
- application/pdf
- application/zip
- 表单相关:
- form-data
- ==multipart/form-data==
- 案例:
- application/x-www-form-urlencoded
- 案例:
- 常用文件
- .xls文件
- .xlsx文件
- .doc
- .docx
- .ppt
- 图片 image/jpeg、image/png、image/gif
- 音频 audio/mpeg、audio/wav、audio/ogg
- 视频 video/mp4、video/avi、video/mpeg
http
HTTP 请求:
# 状态行
<method> <request-URL> <version>
# 请求头
<headers>
# 主体
<entity-body>
MIME(Content-Type)
- 语法
type/subtype
也就是headers中设置的 content-type
原始格式:raw
原始数据格式,可以用于传输任意类型的数据。它没有特定的结构或编码方式,可以根据具体需求自由定义数据的格式和内容
文本:text/xxx
表明文件是普通文本,理论上是人类可读
text 文件类型若没有特定的 subtype,就使用 text/plain
text/plain
纯文本格式,用于传输简单的文本数据,如纯文本文件或邮件正文
text/html
html文本
text/css
text/javascript
text/xml
xml文本
二进制:application/xxx
二进制文件没有特定或已知的 subtype,即使用 application/octet-stream
。
application/octet-stream
通用的二进制数据格式,用于传输任意类型的二进制数据,如图像、音频、视频等。
binary
二进制数据格式,用于传输二进制文件或图像等非文本数据。二进制数据以字节流的形式传输,适用于需要高效传输大量数据的场景。
msgpack
二进制序列化格式,用于高效地将数据编码为二进制形式进行传输和存储。它比 JSON 更紧凑,序列化和反序列化速度更快,适用于对性能要求较高的场景。
application/json
GraphQL
用于数据查询和操作的查询语言和运行时环境。GraphQL 允许客户端精确地指定需要的数据,并返回与请求相匹配的结果。它提供了更灵活的数据查询和响应机制,适用于构建高度可定制的 API。
案例:
POST / HTTP/1.1
Host: www.example.com
Content-Type: application/json
Content-Length: 27{"query": "query ($id: ID!) { user(id: $id) { name, email } }","variables": { "id": "123" }
}
application/xml
application/pdf
application/zip
表单相关:
表单数据: key-value
form-data
将数据以键值对的形式发送,并支持文件上传。
multipart/form-data
与 form-data 类似,但支持同时上传多个form-data
用一个固定边界值(Boundary)分隔
每个部分的表单都可以有不同的格式
案例:
POST / HTTP/1.1
Host: example.com
Content-Length: 386
# 请求头 - 必须,指定Content-Type为multipart/form-data,指定boundary边界值
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW# 请求体:
# 每个form-data都以 --boundary开头
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="stringkey" # name是表单key的URL编码stringvalue # 表单value
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="intkey"1
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="filekey"; filename="file" # 文件有filename表示文件的名称
Content-Type: <Content-Type header here> # 单独定义Content-Type:指定文件 MIME 类型(data) # 文件的二进制数据
------WebKitFormBoundary7MA4YWxkTrZu0gW-- # --boundary-- 作为结束标志
application/x-www-form-urlencoded
将表单数据编码为 URL 参数。数据以键值对的形式发送,键值对之间使用 &
符号分隔,键和值之间使用 =
符号分隔。
案例:
POST /api/login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencodedusername=john&password=123456
常用文件
.xls文件
application/vnd.ms-excel
.xlsx文件
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.doc
application/msword
.docx
application/vnd.openxmlformats-officedocument.wordprocessingml.document
.ppt
application/vnd.ms-powerpoint