PHPで始めるRESTful API開発入門

現代のWeb開発では、フロントエンドとバックエンドを切り離した「APIベースの開発」が主流となっています。
中でも、RESTful APIはシンプルで分かりやすい設計思想に基づいており、PHPでも簡単に構築できます。

本記事では、RESTの設計原則に始まり、JSON形式でのデータ出力APIルーティングの構成、さらにAPI認証の基本(APIキー・JWT)について実践的に学びます。

RESTの設計原則とは?

REST(Representational State Transfer)は、リソース(資源)をHTTPメソッドで操作するシンプルな設計ルールです。

RESTの基本ルール

操作HTTPメソッドエンドポイント例
データ取得GET/api/users
データ追加POST/api/users
データ更新PUT/api/users/1
データ削除DELETE/api/users/1

URIは「名詞」、メソッドは「動詞」の役割を持たせるのがRESTfulな設計です。


PHPでJSON形式のAPIレスポンスを返す

APIではHTMLではなく、JSON形式でデータを返すのが一般的です。

<?php 
 // sample_api.php
 header("Content-Type: application/json"); 
 $data = [ "status" => "success", "users" => [ ["id" => 1, "name" => "佐藤"],
   ["id" => 2, "name" => "田中"] ] ]; 
 echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); 
?>

header()でJSONを明示し、json_encode()で配列をJSONに変換します。

APIルーティングとコントローラー設計

簡易ルーティング例(index.php)

<?php 
 $request = $_SERVER["REQUEST_URI"]; 
 $method = $_SERVER["REQUEST_METHOD"]; 
 require_once "UserController.php"; 
 if ($request === "/api/users" && $method === "GET") { 
  UserController::index(); 
 } elseif (preg_match("#^/api/users/(\d+)$#", $request, $matches) && $method === "GET") {   
  UserController::show($matches[1]); 
 } else { 
  http_response_code(404); 
  echo json_encode(["error" => "Not Found"]); 
 } 
?>

コントローラー例(UserController.php)

<?php 
 class UserController { 
  public static function index() { 
   $users = [ ["id" => 1, "name" => "佐藤"], ["id" => 2, "name" => "田中"] ]; 
   echo json_encode($users); 
  } 
  public static function show($id) { 
   $user = ["id" => $id, "name" => "仮ユーザー"]; 
   echo json_encode($user); 
  } 
 } 
?>

API認証の基礎|APIキーとJWT入門

① APIキー認証

リクエストヘッダーやURLに「キー」を含めて認証する方式です。

<?php 
 $valid_key = "my-api-key-123"; 
 $client_key = $_GET["api_key"] ?? ""; 
 if ($client_key !== $valid_key) { 
  http_response_code(401); 
  echo json_encode(["error" => "Unauthorized"]); 
  exit; 
 } 
?>

シンプルですが、HTTPSを前提にしましょう。

② JWT(JSON Web Token)認証(概要)

JWTは、署名付きのトークンでユーザーを識別・認証する仕組みです。

  • ログイン時にトークンを発行
  • 以後のAPIアクセスではトークンをヘッダーに付与
  • トークンの中にユーザー情報や有効期限が含まれる

PHPでは firebase/php-jwt ライブラリを使用するのが一般的です(Composer経由でインストール)。

// トークン生成例(要:composer require firebase/php-jwt) 
use Firebase\JWT\JWT; 
$payload = ["user_id" => 1, "exp" => time() + 3600]; 
$jwt = JWT::encode($payload, "secret-key", "HS256"); 
echo $jwt; 

まとめ

今回は、PHPによるRESTful API開発の基礎を学びました:

  • REST設計原則: HTTPメソッドとURI設計
  • JSONレスポンス: json_encode()でAPI化
  • APIルーティングとコントローラー分離
  • API認証: APIキー / JWTの基礎

これらをベースに、「SPAアプリとの連携」や「Vue.js/ReactとAPI通信」「LaravelのAPIリソース管理」などにも応用できます。

採用情報 長谷川 横バージョン
SHARE
PHP Code Snippets Powered By : XYZScripts.com