Dengan pembangunan pembangunan web, RESTful API telah menjadi salah satu piawaian untuk aplikasi web moden. Berbanding dengan API tradisional, API RESTful lebih fleksibel dan berskala. PHP dan MySQL, sebagai alat pembangunan web yang digunakan secara meluas, juga boleh digunakan untuk membina API RESTful. Artikel ini akan memperkenalkan secara terperinci cara membina API RESTful menggunakan PHP dan MySQL, serta memberikan contoh dan pertimbangan kod.
1. Pengenalan kepada RESTful API
RESTful API ialah borang reka bentuk API Web berdasarkan protokol HTTP dan format data standard. Ia biasanya menggunakan kata kerja HTTP (GET, POST, PUT, DELETE, dll.) untuk beroperasi pada sumber dan menggunakan kod status HTTP untuk mewakili hasil operasi. Prinsip reka bentuk RESTful API termasuk sumber, pemindahan keadaan perwakilan, antara muka bersatu, pembendungan diri dan hipermedia.
2. Gunakan PHP dan MySQL untuk membina API RESTful
Mula-mula anda perlu memasang dan mengkonfigurasi PHP dan MySQL , yang tidak dibincangkan di sini. Selepas pemasangan selesai, anda boleh menggunakan fungsi phpinfo untuk mengesahkan sama ada PHP berfungsi dengan betul, atau mencipta pangkalan data ujian dalam MySQL untuk mengesahkan sama ada MySQL berfungsi dengan betul.
Seterusnya, anda perlu mencipta struktur asas API RESTful. Yang pertama ialah sambungan pangkalan data, menggunakan kod berikut:
<?php //数据库连接参数 define('DB_HOST', 'localhost'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'test'); //建立数据库连接 function connect() { $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME); if(mysqli_connect_errno()) { die("Database connection failed: " . mysqli_connect_error()); } return $mysqli; } //关闭数据库连接 function disconnect($mysqli) { $mysqli -> close(); } ?>
Perlu diingat bahawa sambungan mysqli berorientasikan objek digunakan di sini dan bukannya kaedah sambungan mysql tradisional.
Seterusnya, anda perlu mencipta kelas API RESTful asas, yang mentakrifkan gelagat permintaan dan respons HTTP. Empat kata kerja HTTP ditakrifkan di sini: GET, POST, PUT dan DELETE. Gunakan kod berikut:
<?php require_once('db_connect.php'); class Rest { protected $request; protected $mysqli; protected $method; protected $args; protected $resource = ''; protected $statusCodes = array( 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 204 => 'No Content', 400 => 'Bad Request', 401 => 'Unauthorized', 403 => 'Forbidden', 404 => 'Not Found', 406 => 'Not Acceptable', 500 => 'Internal Server Error' ); public function __construct() { $this -> mysqli = connect(); $this -> request = explode('/', trim($_SERVER['PATH_INFO'], '/')); $this -> method = $_SERVER['REQUEST_METHOD']; $this -> args = $_SERVER['QUERY_STRING']; $this -> resource = array_shift($this -> request); } public function processRequest() { switch($this -> method) { case 'POST': $response = $this -> create(); break; case 'PUT': $response = $this -> update(); break; case 'DELETE': $response = $this -> delete(); break; case 'GET': default: $response = $this -> read(); break; } header('HTTP/1.1 ' . $this -> statusCodes[$response['status']]); header('Content-Type: application/json; charset=utf-8'); return json_encode($response['data']); } protected function create() {} protected function read() {} protected function update() {} protected function delete() {} } ?>
Pembina kelas ini akan menghuraikan kaedah, laluan dan parameter dalam permintaan HTTP dan menyimpannya dalam sifat objek. Kemudian panggil kaedah yang sepadan mengikut kaedah HTTP untuk memproses permintaan.
Seterusnya, anda perlu melaksanakan operasi CRUD dalam kelas RESTful API. Mengambil pengguna sebagai contoh, gunakan kod berikut:
class UserAPI extends Rest { public function create() { $data = json_decode(file_get_contents("php://input"), true); $username = $data['username']; $password = $data['password']; $email = $data['email']; if(!empty($username) && !empty($password) && !empty($email)) { $stmt = $this -> mysqli -> prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)"); $stmt -> bind_param("sss", $username, $password, $email); $stmt -> execute(); $stmt -> close(); $response['status'] = 201; $response['data'] = "User created successfully."; } else { $response['status'] = 400; $response['data'] = "Invalid parameters."; } return $response; } public function read() { $id = array_shift($this -> request); if(empty($id)) { $result = $this -> mysqli -> query("SELECT * FROM users"); while($row = $result -> fetch_assoc()) { $data[] = $row; } $response['status'] = 200; $response['data'] = $data; } else { $result = $this -> mysqli -> query("SELECT * FROM users WHERE id = $id"); if($result -> num_rows == 1) { $response['status'] = 200; $response['data'] = $result -> fetch_assoc(); } else { $response['status'] = 404; $response['data'] = "User not found."; } } return $response; } public function update() { $id = array_shift($this -> request); $data = json_decode(file_get_contents("php://input"), true); $username = $data['username']; $password = $data['password']; $email = $data['email']; if(!empty($username) && !empty($password) && !empty($email)) { $stmt = $this -> mysqli -> prepare("UPDATE users SET username=?, password=?, email=? WHERE id=?"); $stmt -> bind_param("sssi", $username, $password, $email, $id); $stmt -> execute(); $stmt -> close(); $response['status'] = 200; $response['data'] = "User updated successfully."; } else { $response['status'] = 400; $response['data'] = "Invalid parameters."; } return $response; } public function delete() { $id = array_shift($this -> request); $result = $this -> mysqli -> query("SELECT * FROM users WHERE id = $id"); if($result -> num_rows == 1) { $this -> mysqli -> query("DELETE FROM users WHERE id = $id"); $response['status'] = 200; $response['data'] = "User deleted successfully."; } else { $response['status'] = 404; $response['data'] = "User not found."; } return $response; } }
Kelas UserAPI ditakrifkan di sini dan melaksanakan kaedah cipta, baca, kemas kini dan padam. Untuk permintaan POST, data Json akan dihuraikan ke dalam nama pengguna, kata laluan dan alamat e-mel, dan dimasukkan ke dalam jadual pengguna untuk permintaan GET, jika URL mengandungi parameter id, maklumat pengguna yang sepadan akan dikembalikan, jika tidak, semua maklumat pengguna akan; dikembalikan; untuk permintaan PUT, huraikan data Json ke dalam nama pengguna, kata laluan dan alamat e-mel, dan kemas kini maklumat pengguna yang sepadan untuk permintaan DELETE, padamkan pengguna yang sepadan mengikut parameter id dalam URL.
Selepas mencipta RESTful API, anda boleh menggunakan alatan seperti curl untuk menguji sama ada API berfungsi dengan betul. Gunakan arahan curl berikut untuk mencipta pengguna ke API RESTful:
curl -H "Content-Type: application/json" -X POST -d '{ "username":"testuser", "password":"testpassword", "email":"testuser@example.com" }' http://localhost/user
Gunakan arahan curl berikut untuk mengembalikan semua pengguna:
curl http://localhost/user
Gunakan arahan curl berikut untuk mengemas kini maklumat pengguna:
curl -H "Content-Type:application/json" -X PUT -d '{ "username":"newusername", "password":"newpassword", "email":"newusername@example.com" }' http://localhost/user/1
Gunakan Arahan curl berikut untuk memadam pengguna:
curl -X DELETE http://localhost/user/1
3. Nota
Anda perlu memberi perhatian kepada perkara berikut semasa membina API RESTful:
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan PHP dan MySQL untuk membina API RESTful, dan menyediakan contoh kod dan langkah berjaga-jaga. Kelebihan RESTful API ialah fleksibiliti, skalabiliti, penyelenggaraan mudah, dsb. Ia merupakan bahagian yang amat diperlukan dalam pembangunan web. Apabila menggunakan API RESTful, anda perlu memberi perhatian kepada isu seperti keselamatan, isu merentas domain, kawalan versi dan kod status HTTP.
Atas ialah kandungan terperinci Belajar membina API RESTful menggunakan PHP dan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!