最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)求體來(lái)替代FormData傳遞參數(shù)的方式,在參數(shù)量較多時(shí)POST JSON要比POST FormData便于開(kāi)發(fā)和測(cè)試,今天我們就來(lái)看一下在PHP中如何發(fā)送和接受JOSN POST,以及在Laravel框架中針對(duì)JSON Request提供的訪問(wèn)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)沒(méi)有填充, 比激活 always_populate_raw_post_data 潛在需要更少的內(nèi)存。 enctype="multipart/form-data" 的時(shí)候 php://input 是無(wú)效的。

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

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

很多時(shí)候在開(kāi)發(fā)中我們并不會(huì)像上面那樣用php curl庫(kù)來(lái)發(fā)送請(qǐng)求而是使用開(kāi)源的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,都可以通過(guò) input 方法獲取 JSON 數(shù)據(jù),還可以通過(guò)“.”號(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的Flask中使用WTForms表單框架的基礎(chǔ)教程

    在Python的Flask中使用WTForms表單框架的基礎(chǔ)教程

    WTForms由Python寫(xiě)成,為表單而生,提供了很多制作Web表單的實(shí)用API,和Flask框架結(jié)合使用效果拔群,這里我們就一起看一下在Python的Flask中使用WTForms表單框架的基礎(chǔ)教程
    2016-06-06
  • Python數(shù)據(jù)操作方法封裝類實(shí)例

    Python數(shù)據(jù)操作方法封裝類實(shí)例

    這篇文章主要介紹了Python數(shù)據(jù)操作方法封裝類,結(jié)合具體實(shí)例形式分析了Python針對(duì)數(shù)據(jù)庫(kù)的連接、執(zhí)行sql語(yǔ)句、刪除、關(guān)閉等操作技巧,需要的朋友可以參考下
    2017-06-06
  • Python中用memcached來(lái)減少數(shù)據(jù)庫(kù)查詢次數(shù)的教程

    Python中用memcached來(lái)減少數(shù)據(jù)庫(kù)查詢次數(shù)的教程

    這篇文章主要介紹了Python中用memcached來(lái)減少數(shù)據(jù)庫(kù)查詢次數(shù)的教程,memcached是一種分布式的內(nèi)存緩存工具,使用后可以減少對(duì)硬盤(pán)的I/O次數(shù),需要的朋友可以參考下
    2015-04-04
  • Python中Playwright?與?pyunit?結(jié)合使用詳解

    Python中Playwright?與?pyunit?結(jié)合使用詳解

    這篇文章主要介紹了Python中Playwright?與?pyunit?結(jié)合使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • python selenium firefox使用詳解

    python selenium firefox使用詳解

    這篇文章主要介紹了python selenium firefox使用詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • MAC平臺(tái)基于Python Appium環(huán)境搭建過(guò)程圖解

    MAC平臺(tái)基于Python Appium環(huán)境搭建過(guò)程圖解

    這篇文章主要介紹了MAC平臺(tái)基于Python Appium環(huán)境搭建過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Python 由字符串函數(shù)名得到對(duì)應(yīng)的函數(shù)(實(shí)例講解)

    Python 由字符串函數(shù)名得到對(duì)應(yīng)的函數(shù)(實(shí)例講解)

    下面小編就為大家?guī)?lái)一篇Python 由字符串函數(shù)名得到對(duì)應(yīng)的函數(shù)(實(shí)例講解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • 如何基于matlab相機(jī)標(biāo)定導(dǎo)出xml文件

    如何基于matlab相機(jī)標(biāo)定導(dǎo)出xml文件

    這篇文章主要介紹了如何基于matlab相機(jī)標(biāo)定導(dǎo)出xml文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python編寫(xiě)簡(jiǎn)單爬蟲(chóng)資料匯總

    python編寫(xiě)簡(jiǎn)單爬蟲(chóng)資料匯總

    本文給大家匯總介紹了下幾種使用Python編寫(xiě)簡(jiǎn)單爬蟲(chóng)的方法和代碼,非常的不錯(cuò),這里分享給大家,希望大家能夠喜歡。
    2016-03-03
  • C#中使用XPath定位HTML中的img標(biāo)簽的操作示例

    C#中使用XPath定位HTML中的img標(biāo)簽的操作示例

    隨著互聯(lián)網(wǎng)內(nèi)容的日益豐富,網(wǎng)頁(yè)數(shù)據(jù)的自動(dòng)化處理變得愈發(fā)重要,圖片作為網(wǎng)頁(yè)中的重要組成部分,其獲取和處理在許多應(yīng)用場(chǎng)景中都顯得至關(guān)重要,本文將詳細(xì)介紹如何在 C# 應(yīng)用程序中使用 XPath 定位 HTML 中的 img 標(biāo)簽,并實(shí)現(xiàn)圖片的下載,需要的朋友可以參考下
    2024-07-07

最新評(píng)論

庆云县| 高平市| 通江县| 河北省| 城固县| 襄城县| 哈巴河县| 钟祥市| 安龙县| 塘沽区| 赣榆县| 武汉市| 论坛| 阳江市| 台南市| 宕昌县| 鞍山市| 盘山县| 井陉县| 黔西| 杨浦区| 珲春市| 麻栗坡县| 天祝| 宝兴县| 饶平县| 商丘市| 建始县| 姜堰市| 贵德县| 洛扎县| 神木县| 东乡族自治县| 定结县| 九江县| 绥棱县| 页游| 平武县| 方城县| 房山区| 岑溪市|