1. 概述

本文主要整理了POST提交数据到API时Content-Type的使用。

2. 脑图


一文弄懂POST提交的Content-Type值


3. multipart/form-data

将FORM表单数据使用指定的分割字符(boundary)组装成一个字符串提交,可用于提交二进制数据,如上传文件。

请求头加入: Content-Type: multipart/form-data; boundary=尽量长的分割字符串

请求方式如下:


一文弄懂POST提交的Content-Type值


PHP端接收数据方式: 使用 $_POST 变量接收。如下:


一文弄懂POST提交的Content-Type值


4. application/x-www-form-urlencode

将FORM表单数据使用urlencode编码,然后用&连接,组装成k1=v1&k2=v2格式字符串提交,对于提交大量二进制数据比较低效。

请求头加入:Content-Type: application/x-www-form-urlencode

请求方式如下:


一文弄懂POST提交的Content-Type值


PHP端接收数据方式:1). 使用 $_POST 变量 2). 使用 file_get_contents("php://input") 方法,然后用parse_str函数解析


一文弄懂POST提交的Content-Type值


5. application/json

告知服务端POST提交的是JSON字符串。

请求头加入:Content-Type: application/json

请求方式如下:


一文弄懂POST提交的Content-Type值


PHP端接收数据方式:使用 file_get_contents("php://input") 方法,然后用json_decode函数解析


一文弄懂POST提交的Content-Type值

6. text/plain

告知服务端JSON提交的是文本字符串。

请求头加入:Content-Type: text/plain

请求方式如下:


一文弄懂POST提交的Content-Type值


PHP端接收数据方式:使用 file_get_contents("php://input") 方法


一文弄懂POST提交的Content-Type值

总结

  • 文件上传用multipart/form-data类型,然后用$_FILES和$_POST接收参数。
  • 通用接口用application/x-www-form-urlencode类型,然后用$_POST或file_get_contents("php://input")接受参数。
  • 只接受JSON字符串的接口用application/json类型,然后用file_get_contents("php://input")接受参数。