PHP - API 介接
課程簡介
API(Application Programming Interface)是應用程式之間互相通訊的橋樑。PHP 可用於呼叫外部 API 取得資料或提供 API 供其他應用使用。本課程將教學如何使用 PHP 與 API 進行介接,並介紹常用技術如 cURL
和 file_get_contents()
。
API 的基本概念
- RESTful API:基於 HTTP 的輕量級介面,通常使用 JSON 傳遞資料。
- HTTP 方法:
GET
:取得資源。POST
:新增資源。PUT/PATCH
:更新資源。DELETE
:刪除資源。
使用 PHP 呼叫 API
方法 1:file_get_contents()
適用於簡單 GET 請求。
1
2
3
4
5
6
7
<?php
$url = "https://jsonplaceholder.typicode.com/posts/1";
$response = file_get_contents($url);
$data = json_decode($response, true);
echo "標題:" . $data["title"];
?>
方法 2:cURL
更靈活的工具,可處理各種 HTTP 請求。
cURL GET 請求
1
2
3
4
5
6
7
8
9
10
11
<?php
$url = "https://jsonplaceholder.typicode.com/posts/1";
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo "標題:" . $data["title"];
?>
cURL POST 請求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$url = "https://jsonplaceholder.typicode.com/posts";
$postData = [
"title" => "PHP 與 API",
"body" => "這是一篇使用 PHP 發佈的文章",
"userId" => 1
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Content-Type: application/json",
"Accept: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo "新文章 ID:" . $data["id"];
?>
方法 3:使用第三方套件
使用套件如 Guzzle 簡化 API 介接。
安裝 Guzzle
在專案目錄執行:
1
composer require guzzlehttp/guzzle
使用範例
1
2
3
4
5
6
7
8
9
10
11
<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
$client = new Client();
$response = $client->request('GET', 'https://jsonplaceholder.typicode.com/posts/1');
$data = json_decode($response->getBody(), true);
echo "標題:" . $data["title"];
?>
提供 API 功能
1. 基本範例
建立 PHP API,提供簡單 JSON 回應:
1
2
3
4
5
6
7
8
9
10
<?php
header("Content-Type: application/json");
$data = [
"status" => "success",
"message" => "歡迎來到我的 API!"
];
echo json_encode($data);
?>
2. RESTful API
範例:簡單 CRUD 操作
建立一個處理使用者資料的 API。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
header("Content-Type: application/json");
$method = $_SERVER["REQUEST_METHOD"];
switch ($method) {
case "GET":
echo json_encode(["message" => "取得使用者資料"]);
break;
case "POST":
echo json_encode(["message" => "新增使用者"]);
break;
case "PUT":
echo json_encode(["message" => "更新使用者資料"]);
break;
case "DELETE":
echo json_encode(["message" => "刪除使用者"]);
break;
default:
http_response_code(405);
echo json_encode(["message" => "方法不被允許"]);
break;
}
?>
課程重點
1. 處理 API 回應
- 使用
json_decode()
處理 JSON 資料。 - 驗證回應狀態碼,例如
200
(成功)或404
(未找到)。
2. 安全性注意事項
- API 金鑰:對於需要授權的 API,使用安全的方式傳遞金鑰(如 HTTP 標頭)。
- 防止惡意請求:實現速率限制(Rate Limiting)或驗證請求來源。
- 資料驗證:確保輸入與輸出資料的安全性與完整性。
教學練習
練習 1:呼叫天氣 API
使用 OpenWeatherMap API,取得指定城市的天氣資訊並顯示。
練習 2:建立留言系統 API
設計一個簡單 API,提供留言新增、取得及刪除功能。
練習 3:整合第三方服務
整合支付服務(如 Stripe)或地圖服務(如 Google Maps),完成一個實用範例。
教學重點
- 掌握 PHP 呼叫外部 API 的多種方法(如
file_get_contents()
與cURL
)。 - 熟悉 API 的基礎結構與常見操作。
- 學習提供 API 的設計與實現,並考慮安全性需求。
本文章以 CC BY 4.0 授權