欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP實(shí)現(xiàn)發(fā)送和接收J(rèn)SON請(qǐng)求

 更新時(shí)間:2018年06月07日 08:17:52   作者:KevinYan  
本篇文章給大家分享了PHP實(shí)現(xiàn)發(fā)送和接收J(rèn)SON請(qǐng)求的詳細(xì)方法和實(shí)例代碼,有興趣的朋友可以參考學(xué)習(xí)下。

現(xiàn)在微服務(wù)中,很多API由于需要傳遞的參數(shù)較多所以要求用包含所有參數(shù)的JSON數(shù)據(jù)作為POST請(qǐng)求的請(qǐng)求體來替代FormData傳遞參數(shù)的方式,在參數(shù)量較多時(shí)POST JSON要比POST FormData便于開發(fā)和測(cè)試,今天我們就來看一下在PHP中如何發(fā)送和接受JOSN POST,以及在Laravel框架中針對(duì)JSON Request提供的訪問JSON請(qǐng)求數(shù)據(jù)的便捷方法。

PHP發(fā)送JSON POST

$url = "http://example.com/request/post/json"; 
$data = json_encode(["foo" => "bar"]);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
curl_close($curl);

PHP接受JSON POST

$data = json_decode(file_get_contents('php://input'), true);

$HTTP_RAW_POST_DATA](http://php.net/manual/zh/reserved.variables.httprawpostdata.php),因?yàn)樗灰蕾囉谔囟ǖ?php.ini 指令。 而且,這樣的情況下 [$HTTP_RAW_POST_DATA 默認(rèn)沒有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無效的。

Note: 在 PHP 5.6 之前 php://input 打開的數(shù)據(jù)流只能讀取一次; 數(shù)據(jù)流不支持 seek 操作。 不過,依賴于 SAPI 的實(shí)現(xiàn),請(qǐng)求體數(shù)據(jù)被保存的時(shí)候, 它可以打開另一個(gè) php://input 數(shù)據(jù)流并重新讀取。 通常情況下,這種情況只是針對(duì) POST 請(qǐng)求,而不是其他請(qǐng)求方式,比如 PUT 或者 PROPFIND。

使用Guzzle發(fā)送JSON請(qǐng)求

很多時(shí)候在開發(fā)中我們并不會(huì)像上面那樣用php curl庫(kù)來發(fā)送請(qǐng)求而是使用開源的Http包,常用的Http package比如 Guzzle都有為發(fā)送JSON請(qǐng)求提供了便捷的方法。

//Guzzle version >= 5
use GuzzleHttp\Client;

$client = new Client();

$response = $client->post('url', [
 GuzzleHttp\RequestOptions::JSON => ['foo' => 'bar']
]);

Laravel中接受JSON POST

使用Request的json()->all()獲取請(qǐng)求體里的整個(gè)JSON

//IN controller
public function recieveJson(Request $request)
{
 $request->json()->all();
 //返回值是一個(gè)數(shù)組
 //針對(duì)前面的請(qǐng)求例子,json方法返回的是數(shù)組 ["foo" => "bar"]
 //$request->json()返回的是ParamBage
}

使用Request的input方法獲取請(qǐng)求中的整個(gè)JSON或者具體key的值

發(fā)送 JSON 請(qǐng)求到Laravel應(yīng)用的時(shí)候,只要 Content-Type 請(qǐng)求頭被設(shè)置為 application/json,都可以通過 input 方法獲取 JSON 數(shù)據(jù),還可以通過“.”號(hào)解析數(shù)組:

public function laravelRecieveJson(Reuqest $request)
{
  $foo = $request->input('foo');//echo $foo => 'bar'
  //使用點(diǎn)號(hào)獲取內(nèi)嵌數(shù)組key的值
  //假設(shè)請(qǐng)求體中的JSON為 {"user": {"name": "kevin", "age": 18}}
  $name = $reqeust->input('user.name');//echo $name => 'kevin'
}

相關(guān)文章

  • python 日志增量抓取實(shí)現(xiàn)方法

    python 日志增量抓取實(shí)現(xiàn)方法

    下面小編就為大家分享一篇python 日志增量抓取實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Pytorch-Geometric中的Message?Passing使用及說明

    Pytorch-Geometric中的Message?Passing使用及說明

    這篇文章主要介紹了Pytorch-Geometric中的Message?Passing使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN示例詳解

    Python人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN示例詳解

    這篇文章主要為大家介紹了人工智能學(xué)習(xí)PyTorch實(shí)現(xiàn)WGAN的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • python實(shí)現(xiàn)百度文庫(kù)自動(dòng)化爬取

    python實(shí)現(xiàn)百度文庫(kù)自動(dòng)化爬取

    項(xiàng)目是合法項(xiàng)目,只是進(jìn)行數(shù)據(jù)解析而已,不能下載看不到的內(nèi)容.部分文檔在電腦端不能預(yù)覽,但是在手機(jī)端可以預(yù)覽,所有本項(xiàng)目把瀏覽器瀏覽格式改成手機(jī)端,支持Windows和Ubuntu. 本項(xiàng)目使用的是chromedriver來控制chrome來模擬人來操作來進(jìn)行文檔爬取
    2021-04-04
  • Python在Windows和在Linux下調(diào)用動(dòng)態(tài)鏈接庫(kù)的教程

    Python在Windows和在Linux下調(diào)用動(dòng)態(tài)鏈接庫(kù)的教程

    這篇文章主要介紹了Python在Windows和在Linux下調(diào)用動(dòng)態(tài)鏈接庫(kù)的教程,在進(jìn)行Python的CS端編程時(shí)經(jīng)常需要用到,需要的朋友可以參考下
    2015-08-08
  • pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式

    pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式

    這篇文章主要介紹了pandas實(shí)現(xiàn)導(dǎo)出數(shù)據(jù)的四種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python中文本和數(shù)字相等判斷方式

    Python中文本和數(shù)字相等判斷方式

    這篇文章主要介紹了Python中文本和數(shù)字相等判斷方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • python利用Excel讀取和存儲(chǔ)測(cè)試數(shù)據(jù)完成接口自動(dòng)化教程

    python利用Excel讀取和存儲(chǔ)測(cè)試數(shù)據(jù)完成接口自動(dòng)化教程

    這篇文章主要介紹了python利用Excel讀取和存儲(chǔ)測(cè)試數(shù)據(jù)完成接口自動(dòng)化教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • pandas combine_first函數(shù)處理兩個(gè)數(shù)據(jù)集重疊和缺失

    pandas combine_first函數(shù)處理兩個(gè)數(shù)據(jù)集重疊和缺失

    combine_first是pandas中的一個(gè)函數(shù),它可以將兩個(gè)DataFrame對(duì)象按照索引進(jìn)行合并,用一個(gè)對(duì)象中的非空值填充另一個(gè)對(duì)象中的空值,這個(gè)函數(shù)非常適合處理兩個(gè)數(shù)據(jù)集有部分重疊和缺失的情況,可以實(shí)現(xiàn)數(shù)據(jù)的補(bǔ)全和更新,本文介紹combine_first函數(shù)的語(yǔ)法及一些案例應(yīng)用
    2024-01-01
  • Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    這篇文章主要介紹了Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作,結(jié)合實(shí)例形式分析了同一個(gè)方法里面既有ORM又有自定義SQL 語(yǔ)句的情況下事務(wù)控制相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論