Dengan perkembangan pesat Internet mudah alih dan aplikasi Web, RESTful API telah menjadi satu bentuk perkhidmatan Web yang penting. Berbanding dengan SOAP dan perkhidmatan Web tradisional, RESTful API lebih ringan, fleksibel dan mudah digunakan. Sebagai bahasa yang digunakan secara meluas dalam pembangunan web, PHP juga menyokong reka bentuk dan pelaksanaan API RESTful. Artikel ini akan memperkenalkan proses reka bentuk dan pelaksanaan melaksanakan RESTful API dalam PHP.
1. Konsep asas RESTful API
RESTful API ialah gaya reka bentuk API berdasarkan protokol HTTP, yang biasanya menggunakan predikat HTTP (GET, POST, PUT, DELETE) untuk operasi data. Ia menggunakan URI sebagai pengecam sumber dan menyokong berbilang format data seperti JSON dan XML. Berbanding dengan reka bentuk perkhidmatan web tradisional, RESTful API adalah lebih ringkas, lebih fleksibel, lebih mudah untuk dilaksanakan dan lebih mudah untuk digunakan, jadi ia telah menarik lebih banyak perhatian daripada pembangun.
2. Reka bentuk API RESTful yang dilaksanakan dalam PHP
URI ialah elemen reka bentuk teras API RESTful dan strukturnya harus mematuhi kepada reka bentuk RESTful pada dasarnya. URI harus mengandungi nama sumber, pengecam sumber dan operasi sumber, dalam format berikut:
http://domain.com/{resource}/{identifier}/{action}
Di mana, sumber Mewakili nama sumber, pengecam mewakili pengecam sumber, dan tindakan mewakili operasi sumber. Contohnya:
http://domain.com/users/1001 // Dapatkan maklumat ID pengguna 1001
http://domain.com/users/1001/orders // Dapatkan pengguna ID senarai pesanan 1001 1001
Kata kerja HTTP (GET, POST, PUT, DELETE) digunakan untuk mengenal pasti operasi pada sumber RESTful yang harus diikuti Spesifikasi kata kerja HTTP. Kata kerja HTTP yang biasa digunakan dan operasi yang sepadan adalah seperti berikut:
DAPATKAN: Dapatkan sumber (seperti mendapatkan maklumat pengguna, pesanan, dll.)
POST: Cipta sumber baharu (seperti mencipta pengguna baharu, pesanan baharu , dsb.)
PUT: Ubah suai sumber (seperti mengubah suai maklumat pengguna, maklumat pesanan, dll.)
PADAM: Padamkan sumber (seperti memadamkan pengguna, pesanan, dll.)
RESTful API menyokong berbilang format data, termasuk JSON, XML, dsb. Data biasanya dihantar menggunakan format JSON. PHP menyediakan fungsi json_encode() untuk pengekodan pembolehubah PHP ke dalam format JSON, dan fungsi json_decode() untuk menyahkod format JSON ke dalam pembolehubah PHP. Berikut ialah contoh maklumat pengguna dalam format JSON:
{
"user_id": "1001", "user_name": "张三", "user_email": "zhangsan@domain.com", "user_phone": "13800138000"
}
3 Pelaksanaan RESTful API dalam PHP
Untuk melaksanakan RESTful API, anda perlu mencipta skrip PHP yang menulis kod antara muka dan melaksanakan operasi sumber yang sepadan mengikut prinsip reka bentuk di atas. Berikut ialah contoh mudah PHP yang melaksanakan RESTful API:
// Define global variable
define('DB_HOST', 'localhost');
define(' DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'database');
// Dapatkan kata kerja HTTP dan URI
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
// Parse URI
$req_uri = explode('/', $ uri);
$resource = $req_uri[1];
$identifier = isset($req_uri[2]) ? ]) ? $req_uri[3] : null;
$db = PDO baharu("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD );
case 'GET': if($resource == 'users') { if($identifier) { $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id"); $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); echo json_encode($result); } else { $stmt = $db->query("SELECT * FROM users"); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); echo json_encode($result); } } break; case 'POST': if($resource == 'users') { // 获取POST数据 $data = json_decode(file_get_contents('php://input'), true); // 插入数据 $stmt = $db->prepare("INSERT INTO users(user_name, user_email, user_phone) VALUES(:user_name, :user_email, :user_phone)"); $stmt->bindParam(':user_name', $data['user_name'], PDO::PARAM_STR); $stmt->bindParam(':user_email', $data['user_email'], PDO::PARAM_STR); $stmt->bindParam(':user_phone', $data['user_phone'], PDO::PARAM_STR); $stmt->execute(); // 返回插入的数据 $lastInsertId = $db->lastInsertId(); $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id"); $stmt->bindParam(':user_id', $lastInsertId, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); echo json_encode($result); } break; case 'PUT': if($resource == 'users' && $identifier) { // 获取PUT数据 $data = json_decode(file_get_contents('php://input'), true); // 更新数据 $stmt = $db->prepare("UPDATE users SET user_name = :user_name, user_email = :user_email, user_phone = :user_phone WHERE user_id = :user_id"); $stmt->bindParam(':user_name', $data['user_name'], PDO::PARAM_STR); $stmt->bindParam(':user_email', $data['user_email'], PDO::PARAM_STR); $stmt->bindParam(':user_phone', $data['user_phone'], PDO::PARAM_STR); $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT); $stmt->execute(); // 返回更新的数据 $stmt = $db->prepare("SELECT * FROM users WHERE user_id = :user_id"); $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); echo json_encode($result); } break; case 'DELETE': if($resource == 'users' && $identifier) { // 删除数据 $stmt = $db->prepare("DELETE FROM users WHERE user_id = :user_id"); $stmt->bindParam(':user_id', $identifier, PDO::PARAM_INT); $stmt->execute(); echo json_encode(array('status' => 'ok')); } break;
?>
Atas ialah kandungan terperinci Reka bentuk dan pelaksanaan RESTful API dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!