1、明確需求
實(shí)戰(zhàn)工作中經(jīng)常會(huì)請(qǐng)求各種各樣的接口,例如
•微信網(wǎng)頁(yè)授權(quán)接口

• 高德周邊檢索接口

•發(fā)現(xiàn):下圖是根據(jù)接口文檔開發(fā)后的代碼,發(fā)現(xiàn)代碼可讀性差(ps. 參數(shù)的作用不詳)
• 解決:通過(guò)http_build_query函數(shù)優(yōu)化

<?php
###微信網(wǎng)頁(yè)授權(quán)接口
//1.聲明接口
$api = "https://open.weixin.qq.com/connect/oauth2/authorize?Appid=wx56e3e3d75414b3d0&redirect_uri=http://itcast.cn/login.php&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
//2.跳轉(zhuǎn)授權(quán)頁(yè)面
header("Location: $api");
echo '<hr />';
###高德地圖周邊檢索接口
//1.聲明接口
$api = "http://restapi.amap.com/v3/place/around?key=b94b446f4ecad8b4f0e6cf758bacf915&location=121.611809,31.034800&keywords=如家&types=&radius=50000&offset=20&page=1&extensions=all";
//2.請(qǐng)求接口
$data = file_get_contents($api);
//3.打印結(jié)果
var_dump($data);
2、語(yǔ)法說(shuō)明
作用:將數(shù)組轉(zhuǎn)化為GET形式(輸出結(jié)果 -> 數(shù)組鍵1=數(shù)組值1&....數(shù)組鍵n=數(shù)組值n)
語(yǔ)法:http_build_query(數(shù)組)

<?php
//聲明接口數(shù)據(jù)
$apiData = [
'user' => 'z3',
'age' => 18,
'sex' => 'boy'
];
//將接口數(shù)據(jù)轉(zhuǎn)化為GET形式字符串
echo http_build_query($apiData);
3、分析步驟
這里我們主要通過(guò)php的http_build_query函數(shù),來(lái)格式化GET請(qǐng)求的參數(shù)。我們以微信網(wǎng)頁(yè)授權(quán)接口為例,實(shí)現(xiàn)過(guò)程非常簡(jiǎn)單,一共只需要2個(gè)步驟:
① 將接口參數(shù)放到數(shù)組中
② 通過(guò)php的http_build_query函數(shù)來(lái)格式化GET請(qǐng)求的參數(shù)
接下來(lái),我們老師將帶領(lǐng)大家通過(guò)以上2個(gè)步驟來(lái)實(shí)現(xiàn)接口代碼優(yōu)化....
4、推進(jìn)代碼

<?php
###微信網(wǎng)頁(yè)授權(quán)接口
//1.聲明接口數(shù)據(jù)
$apiData = [
'appid' => 'wx56e3e3d75414b3d0', //公眾號(hào)的唯一標(biāo)識(shí)
'redirect_uri' => 'http://itcast.cn/login.php', //授權(quán)后重定向的回調(diào)鏈接地址
'response_type' => 'code', //返回類型,請(qǐng)?zhí)顚慶ode
'scope' => 'snsapi_base', //應(yīng)用授權(quán)作用域:snsapi_base/snsapi_userinfo
'state' => 'STATE#wechat_redirect' //必填參數(shù)
];
//2.聲明接口
$api = "https://open.weixin.qq.com/connect/oauth2/authorize?".http_build_query($apiData);
//3.跳轉(zhuǎn)授權(quán)頁(yè)面
header("Location: $api");