Java 端提供 JSON 格式 API,PHP 以 cURL 獲取並解碼:
<?php
$url = '此處為JAVA提供的介面URL地址';
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
curl_close($ch);
$body = json_decode($contents, true); // 關聯陣列
$data = [];
if ($body['code'] == 200) {
$data = (array)$body['data'];
}
?>
支援跨域回調,前端傳遞 callback 參數:
<?php
public function action_ActionName()
{
header('Content-Type: application/x-javascript');
// 僅允許 baidu.com 域名請求
header('Access-Control-Allow-Origin: .baidu.com');
$callback = isset($_GET['callback']) ? $_GET['callback'] : 'callback';
try {
$rows = select * from *******; // 實際查詢語句
$data = [
'code' => 200,
'msg' => '成功',
'data' => $rows,
];
} catch (Exception $e) {
$data = [
'code' => 3000004,
'msg' => '非法的操作',
];
}
echo $callback . '(' . json_encode($data) . ')';
exit;
}
?>
CURLOPT_RETURNTRANSFER=1 回傳字串而非直接輸出;CURLOPT_POST=1 使用 POST 請求。json_decode($json, true) 產生關聯陣列,方便後續處理。callback({...}),前端以 <script src="api?callback=myFunc"></script> 載入。Access-Control-Allow-Origin 限制允許域名,提升安全性。code、msg、data 三欄位,前端處理一致。PHP 作為中介層串接 Java 後端與前端,核心在於可靠的 cURL 請求、嚴謹的異常處理、標準化的 JSON/JSONP 輸出格式。掌握此模式,即可靈活構建 BFF(Backend for Frontend)服務。