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

POST 请求内容类型

以下是常见的 POST 请求内容类型(Content-Type)及其使用场景的详细总结:


1. application/x-www-form-urlencoded

  • 格式key1=value1&key2=value2(URL 编码)
  • 特点
    • 默认的表单提交格式
    • 数据会被 URL 编码(如空格变 +,中文变 %XX
  • 示例
    POST /submit HTTP/1.1
    Content-Type: application/x-www-form-urlencodedusername=admin&password=123456
    
  • 适用场景
    • HTML 表单提交
    • 简单的键值对数据传输

2. multipart/form-data

  • 格式:分块传输,每块用边界符分隔(boundary
  • 特点
    • 支持文件上传
    • 数据不编码,直接传输原始二进制
  • 示例
    POST /upload HTTP/1.1
    Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryABC123----WebKitFormBoundaryABC123
    Content-Disposition: form-data; name="username"admin
    ----WebKitFormBoundaryABC123
    Content-Disposition: form-data; name="file"; filename="test.jpg"
    Content-Type: image/jpeg[二进制文件数据]
    ----WebKitFormBoundaryABC123--
    
  • 适用场景
    • 文件上传
    • 混合文本和二进制数据提交

3. application/json

  • 格式:JSON 结构化数据
  • 特点
    • 支持复杂嵌套数据结构
    • 现代 API 的主流格式
  • 示例
    POST /api/users HTTP/1.1
    Content-Type: application/json{"name": "张三","age": 25,"address": {"city": "北京"}
    }
    
  • 适用场景
    • RESTful API 通信
    • 需要传递结构化数据的场景

4. text/plain

  • 格式:纯文本
  • 特点
    • 不进行任何编码
    • 极少用于生产环境
  • 示例
    POST /log HTTP/1.1
    Content-Type: text/plainThis is a plain text message.
    
  • 适用场景
    • 调试或日志记录
    • 极简文本传输

5. application/xml

  • 格式:XML 结构化数据
  • 特点
    • 可读性强但冗余
    • 逐渐被 JSON 替代
  • 示例
    POST /api HTTP/1.1
    Content-Type: application/xml<user><name>张三</name><age>25</age>
    </user>
    
  • 适用场景
    • 传统企业系统对接(如 SOAP)
    • 需要 XML 格式的遗留系统

6. application/octet-stream

  • 格式:原始二进制流
  • 特点
    • 不指定具体数据类型
    • 服务器需自行解析
  • 示例
    POST /upload-binary HTTP/1.1
    Content-Type: application/octet-stream[原始二进制数据]
    
  • 适用场景
    • 通用二进制文件传输
    • 自定义协议数据交换

7. 其他特殊类型

Content-Type用途
application/graphqlGraphQL 查询
application/soap+xmlSOAP Web 服务调用
application/javascript传输 JS 代码(罕见)

如何选择?

  1. 简单表单x-www-form-urlencoded
  2. 文件上传multipart/form-data
  3. API 交互application/json
  4. 二进制数据octet-stream
  5. 传统系统application/xml

各语言示例代码

Python (Requests)
# JSON
requests.post(url, json={"key": "value"})# Form-data
requests.post(url, data={"key": "value"})# File upload
requests.post(url, files={"file": open("test.jpg", "rb")})
JavaScript (Fetch)
// JSON
fetch(url, {method: 'POST',headers: { 'Content-Type': 'application/json' },body: JSON.stringify({ key: 'value' })
});// Form-data
const formData = new FormData();
formData.append('file', fileInput.files[0]);
fetch(url, { method: 'POST', body: formData });
Java (Spring Boot)
// JSON
@PostMapping("/api")
public ResponseEntity<?> handleJson(@RequestBody UserDTO user) {// ...
}// Multipart
@PostMapping("/upload")
public String uploadFile(@RequestParam MultipartFile file) {// ...
}

关键注意事项

  1. 安全:敏感数据避免用 x-www-form-urlencoded 的 GET 请求
  2. 性能:大文件用 multipart/form-data,小数据用 JSON
  3. 兼容性:传统系统可能仅支持 XML 或 form-data
  4. Content-Type 必须正确设置,否则服务器无法解析数据
http://www.dtcms.com/a/329869.html

相关文章:

  • 移动应用渗透测试:API 接口漏洞的识别与利用技巧
  • Oracle归档日志的查询和定时删除
  • elasticsearch基础概念与集群部署
  • 【16】Transformers快速入门:Token Embedding
  • JavaSE高级-01
  • cuDNN详解,从什么是cuDNN到实际应用过程
  • 肖臻《区块链技术与应用》第十二讲:比特币是匿名的吗?—— 深入解析匿名性、隐私风险与增强技术
  • 区块链DApp:颠覆未来的去中心化应用
  • 【Redis笔记】Redis 的通用命令
  • 字符串匹配算法
  • 认知系统的架构: 认知残余三角形、认知主体意识 和认知演进金字塔
  • UniApp开发常见问题及解决办法
  • 摆脱例行 SQL 报表的隐性成本:用 n8n 构建四节点自动化报告流程
  • 锂电池自动化生产线:智能制造重塑能源产业格局
  • ECCV-2018《Variational Wasserstein Clustering》
  • 【HTML】在页面中画一条0.5px的线
  • 聚焦用户价值,腾讯音乐Q2实现坚实增长
  • c++的运算符优先级
  • 嵌入式第二十七天(UI相关技术(framebuffer))
  • 如何通过api访问SearXNG
  • Open3d:从mesh中采样点云的两个函数
  • 不止于GET:掌握POST报错注入的精髓
  • HTML第二次作业
  • wandb: Network error (SSLError), entering retry loop
  • JavaWeb-XML、HTTP协议和Tomcat服务器
  • TF - IDF算法面试与工作常见问题全解析
  • 51单片机-51单片机最小系统
  • 基于大模型增强的知识图谱的嵌入学习模型的研究
  • 人工智能——CNN基础:卷积和池化
  • 【DL】最优化理论和深度学习