一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注~
1. 概述
本文主要整理了POST提交数据到API时Content-Type的使用。
2. 脑图
3. multipart/form-data
将FORM表单数据使用指定的分割字符(boundary)组装成一个字符串提交,可用于提交二进制数据,如上传文件。
请求头加入: Content-Type: multipart/form-data; boundary=尽量长的分割字符串。
请求方式如下:
PHP端接收数据方式: 使用 $_POST 变量接收。如下:
4. application/x-www-form-urlencode
将FORM表单数据使用urlencode编码,然后用&连接,组装成k1=v1&k2=v2格式字符串提交,对于提交大量二进制数据比较低效。
请求头加入:Content-Type:
application/x-www-form-urlencode。
请求方式如下:
PHP端接收数据方式:1). 使用 $_POST 变量 2). 使用 file_get_contents("php://input") 方法,然后用parse_str函数解析
5. application/json
告知服务端POST提交的是JSON字符串。
请求头加入:Content-Type: application/json。
请求方式如下:
PHP端接收数据方式:使用 file_get_contents("php://input") 方法,然后用json_decode函数解析
6. text/plain
告知服务端JSON提交的是文本字符串。
请求头加入:Content-Type: text/plain。
请求方式如下:
PHP端接收数据方式:使用 file_get_contents("php://input") 方法
总结
- 文件上传用multipart/form-data类型,然后用$_FILES和$_POST接收参数。
- 通用接口用application/x-www-form-urlencode类型,然后用$_POST或file_get_contents("php://input")接受参数。
- 只接受JSON字符串的接口用application/json类型,然后用file_get_contents("php://input")接受参数。