客户端请求与服务端接收

客户端传递参数的几种方式:
通常状况下有主要的两种:
一、URL方式。
二、Request Body方式。php

URL方式就是经过get方式传递参数。
Request Body方式通常经过post传递参数。json

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"app

123
------WebKitFormBoundaryaUSyUoLPtL4bSqEk
Content-Disposition: form-data; name="name"post

hello
(3)查看客户端发送的数据格式
经过浏览器查看网络请求【Network】->【Headers】->【Request Headers】:
Content-Type : multipart/form-data/form-data; boundary=----WebKitFormBoundaryaUSyUoLPtL4bSqEkurl


(----WebKitFormBoundaryaUSyUoLPtL4bSqEk是用来分割参数的)code

第三种: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
=================================================================================
服务端接收参数的几种方式:orm

一、get请求的接收方式:
$id = $_GET['id'];
二、post-form-urlencode请求的接收方式:
$id = $_POST['id'];
三、post-form-data请求的接收方式:
$id = $_POST['id'];
四、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获取。

相关文章
相关标签/搜索