客戶端請求與服務端接收

客戶端傳遞參數的幾種方式:
通常狀況下有主要的兩種:
一、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獲取。

相關文章
相關標籤/搜索