使用 PHP CURL 寫一個 Http Request,傳遞 JSON 資料給後端及接收對方回傳的 JSON 資料|PHP|json|API 串接|Http Request|CURL|伊恩踩坑筆記

現在的框架其實都已經寫好了(例如 Laravel),不需要自己寫這種 function。但如果你是寫原生 PHP,可以用 Curl 寫一個 Http Request 給自己用

function httpRequest($api, $data_string) {
$ch = curl_init($api);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data_string))
);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
}

將以下資料以 json 格式傳給後端

$data = [
"id" => $id,
"field" => $field
];
$data = httpRequest('<https-api-url>', json_encode($data));

然後對方若有回傳資料,可以直接印出 $data 像這樣:

echo $data['message'];

如果對方回的是 JSON Array,就可以用 PHPforeach 迴圈顯示出來:

foreach ($data as $value) {
echo $value['message'];
}

也可以用現有的函數 sizeof 計算 Array 長度

echo sizeof($data);

也可以直接印出後端回的 Body

# 將以上 httpRequest() 的
return json_decode($result, true);
# 改為以下
return $result;

就可以直接印出 Body(當然可能要做些處理)

echo $data;

這是以前還沒有碰框架時的做法

ING Design 応設計
https://www.theingdesign.com/

--

--

Ian BerLin / 伊恩踩坑筆記
Ian BerLin / 伊恩踩坑筆記

Written by Ian BerLin / 伊恩踩坑筆記

專門寫一些自己曾經踩過的坑,希望你沒踩過 / Web & BackEnd Developer • 台北 • theingdesign.com • IG: @ianakaberlin