Web 開発の発展に伴い、RESTful API は最新の Web アプリケーションの標準の 1 つになりました。従来の API と比較して、RESTful API はより柔軟でスケーラブルです。 Web 開発ツールとして広く使用されている PHP と MySQL は、RESTful API の構築にも使用できます。この記事では、PHP と MySQL を使用して RESTful API を構築する方法を詳しく紹介し、コード例と考慮事項を示します。
1. RESTful API の概要
RESTful API は、HTTP プロトコルと標準データ形式に基づいた Web API 設計形式です。通常、HTTP 動詞 (GET、POST、PUT、DELETE など) を使用してリソースを操作し、HTTP ステータス コードを使用して操作結果を表します。 RESTful API の設計原則には、リソース、表現状態の転送、統一インターフェイス、自己包含、ハイパーメディアが含まれます。
2. PHP と MySQL を使用して RESTful API を構築する
まず、PHP と MySQL をインストールして構成する必要があります、これについてもここでは説明しません。インストールが完了したら、phpinfo 関数を使用して PHP が適切に動作しているかどうかを確認したり、MySQL でテスト データベースを作成して MySQL が適切に動作しているかどうかを確認したりできます。
次に、RESTful API の基本構造を作成する必要があります。 1 つ目は、次のコードを使用したデータベース接続です:
<?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(); } ?>
ここでは、従来の mysql 接続方法ではなく、オブジェクト指向の mysqli 接続が使用されていることに注意してください。
次に、HTTP リクエストとレスポンスの動作を定義する基本的な RESTful API クラスを作成する必要があります。ここでは、GET、POST、PUT、DELETE という 4 つの HTTP 動詞が定義されています。次のコードを使用します。
<?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() {} } ?>
このクラスのコンストラクターは、HTTP リクエスト内のメソッド、パス、パラメーターを解析し、オブジェクトのプロパティに保存します。次に、HTTP メソッドに従って対応するメソッドを呼び出し、リクエストを処理します。
次に、RESTful API クラスに CRUD 操作を実装する必要があります。ユーザーを例として、次のコードを使用します。
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; } }
ここでは UserAPI クラスが定義され、作成、読み取り、更新、および削除のメソッドを実装します。 POST リクエストの場合、Json データはユーザー名、パスワード、電子メール アドレスに解析され、users テーブルに挿入されます。GET リクエストの場合、URL に id パラメーターが含まれている場合は、対応するユーザー情報が返され、それ以外の場合はすべてのユーザー情報が返されます。 PUT リクエストの場合は、Json データをユーザー名、パスワード、メール アドレスに解析し、対応するユーザーの情報を更新します。DELETE リクエストの場合は、URL の id パラメーターに従って、対応するユーザーを削除します。
RESTful API を作成した後、curl などのツールを使用して、API が適切に動作しているかどうかをテストできます。次のcurlコマンドを使用して、RESTful APIに対するユーザーを作成します:
curl -H "Content-Type: application/json" -X POST -d '{ "username":"testuser", "password":"testpassword", "email":"testuser@example.com" }' http://localhost/user
次のcurlコマンドを使用して、すべてのユーザーを返します:
curl http://localhost/user
次のcurlコマンドを使用して、ユーザー情報を更新します:
curl -H "Content-Type:application/json" -X PUT -d '{ "username":"newusername", "password":"newpassword", "email":"newusername@example.com" }' http://localhost/user/1
次のcurlコマンドを使用してユーザーを削除します:
curl -X DELETE http://localhost/user/1
3. 注意事項
RESTful APIを構築する場合は、次の点に注意する必要があります:
4. 概要
この記事では、PHP と MySQL を使用して RESTful API を構築する方法を紹介し、コード例と注意事項を示します。 RESTful API の利点は、柔軟性、拡張性、メンテナンスの容易さなどです。Web 開発には不可欠な部分です。 RESTful API を使用する場合は、セキュリティ、クロスドメインの問題、バージョン管理、HTTP ステータス コードなどの問題に注意する必要があります。
以上がPHP と MySQL を使用して RESTful API を構築する方法を学ぶの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。