客户端传递参数的几种方式:
一般情况下有主要的两种:
1、URL方式。
2、Request Body方式。
URL方式就是通过get方式传递参数。
Request Body方式一般通过post传递参数。
post的方式一般有:
post-form-urlencode
post-form-data
post-json
POST第一种:post-form-urlencode。
(1)查看参数:
通过浏览器查看网络请求【Network】->【Headers】->【From Data】:
id:123
name:hello
(2)查看参数源信息
通过浏览器查看网络请求【Network】->【Headers】->【From Data】右侧的【view source】:
id=123&name=hello
(3)查看客户端发送的数据格式
通过浏览器查看网络请求【Network】->【Headers】->【Request Headers】:
Content-Type : application/x-www-form-urlencoded
POST第二种:post-form-data
(1)查看参数:
通过浏览器查看网络请求【Network】->【Headers】->【From Data】:
id:123
name:hello
(2)查看参数源信息
通过浏览器查看网络请求【Network】->【Headers】->【From Data】右侧的【view source】:
------WebKitFormBoundaryaUSyUoLPtL4bSqEk
Content-Disposition: form-data; name="id"
123
------WebKitFormBoundaryaUSyUoLPtL4bSqEk
Content-Disposition: form-data; name="name"
hello
(3)查看客户端发送的数据格式
通过浏览器查看网络请求【Network】->【Headers】->【Request Headers】:
Content-Type : multipart/form-data/form-data; boundary=----WebKitFormBoundaryaUSyUoLPtL4bSqEk
(----WebKitFormBoundaryaUSyUoLPtL4bSqEk是用来分割参数的)
第三种:post-json:
(1)查看参数:
通过浏览器查看网络请求【Network】->【Headers】->【Request Payload】(没有From Data):
{id:"123",name:"hello"}
(2)查看参数源信息
通过浏览器查看网络请求【Network】->【Headers】->【Request Payload】右侧的【view source】:
{"id:"123","name":"hello"}
(3)查看客户端发送的数据格式
通过浏览器查看网络请求【Network】->【Headers】->【Request Headers】:
Content-Type : application/json;charset=UTF-8
=================================================================================
服务端接收参数的几种方式:
1、get请求的接收方式:
$id = $_GET['id'];
2、post-form-urlencode请求的接收方式:
$id = $_POST['id'];
3、post-form-data请求的接收方式:
$id = $_POST['id'];
4、post-json请求的接收方式:
$json_data = file_get_contents("php://input");
$arr_data = json_decode($json_data,true);
$id = $arr_data['id'];
知识点:
通过PHP官网的手册说明,预定义变量,$_POST:
当 HTTP POST 请求的 Content-Type 是
application/x-www-form-urlencoded 或 multipart/form-data 时,
会将变量以关联数组形式传入当前脚本。
PHP有个协议php://,用于访问各个输入/输出流。
php://input是个可以访问请求的原始数据的只读流。
POST请求的情况下,最好使用php://input代替$HTTP_RAW_POST_DATA,因为它不依赖于特定的php.ini。
multipart/form-data不能用php://input获取。