PHPでREST APIを作る方法を完全ガイド!初心者でもわかるAPI開発入門
生徒
「PHPでデータをやり取りできるAPIを作れると聞いたんですが、本当に初心者でも作れるんでしょうか?」
先生
「もちろんできますよ。PHPはサーバー側の処理が得意なので、REST APIを作るのにも向いています。少しずつ仕組みを理解すれば誰でも作れるようになります。」
生徒
「REST APIってそもそも何なのかわからないです…。説明してもらえますか?」
先生
「わかりました。まず仕組みから説明して、そのあとにPHPでの具体的なAPIの作り方を順番に見ていきましょう。」
1. REST APIとは?初心者でも理解できる基本の考え方
REST APIとは、インターネットを通じて必要な情報を要求したり受け取ったりするための「データ提供の仕組み」です。普段使っているスマートフォンのアプリやWebサービスの多くは、このAPIを見えないところで利用しており、画面に最新の情報が表示されるのはAPIが正しく動いているからです。RESTという言葉は「表現の転送」という考え方に基づいており、決まったアクセス方法を使うことで、どんなアプリやサービスからでも同じようにデータへアクセスできるよう設計されています。
イメージとしては、「必要な情報を届けてくれる窓口」がREST APIです。たとえば天気アプリは、天気を提供するAPIに「今日の天気を教えて」と問い合わせ、気温や降水確率などを受け取ります。PHPでも同様に、「商品の一覧を返すAPI」や「住所情報を取得するAPI」を作ることが可能です。どれもこの窓口を通して決まった形でデータを受け渡しする点が共通しています。
初心者の方はまず「REST API=必要なデータを取りに行くための場所」と覚えておくと理解しやすくなります。さらに、実際のデータのやり取りがどのように行われるのかを簡単に体験してみるとイメージがつかみやすくなります。以下は、PHPを使って最も小さなREST APIの動作を体験できるサンプルです。
<?php
// とてもシンプルなREST APIのイメージ
header("Content-Type: application/json; charset=UTF-8");
// データを用意して返すだけのAPI
$response = [
"message" => "ようこそ!REST APIの基本動作です。",
"example" => "このようにAPIは決まった形式でデータを返します。"
];
echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>
ブラウザでこのPHPファイルを開くと、文字だけで構成されたJSONという形式のデータが表示されます。一見すると単純ですが、実際のアプリやサービスはこのような形でAPIとデータをやり取りしています。初心者のうちは、「決まった形式でデータを返す」という基本動作をまず押さえることが大切です。
2. REST APIで使うHTTPメソッドを覚えよう
REST APIでは、どんな種類のデータ操作を行いたいのかによって「HTTPメソッド」を使い分けます。これは、郵便で荷物を送るときに「普通郵便」「速達」「書留」などを目的に合わせて選ぶのと似ています。同じ住所に送るとしても用途が異なるように、APIでも目的に応じて正しいメソッドを選ぶことで、相手側のプログラムが意図を読み取りやすくなります。
- GET:データを読み取る(例:一覧を取得)
- POST:新しいデータを作る(例:新規登録)
- PUT:データを更新する(例:情報の上書き)
- DELETE:データを削除する(例:不要データの削除)
この4つのメソッドを覚えることで、どの操作を行うAPIなのかが直感的に理解できるようになります。PHPでAPIを作るときにも、このメソッドに合わせて処理内容を切り替えるのが基本です。初心者の方が動きをつかむ助けとして、下のような「どのメソッドでアクセスされたかを判別するだけの簡単なサンプル」を紹介します。
<?php
header("Content-Type: application/json; charset=UTF-8");
$method = $_SERVER["REQUEST_METHOD"];
echo json_encode([
"method" => $method,
"message" => $method . "でアクセスされました"
], JSON_UNESCAPED_UNICODE);
?>
このPHPファイルにアクセスすると、ブラウザではGET、ツールでPOSTを送ればPOST、といったように、実際にどのメソッドで呼ばれたのかが確認できます。REST APIの理解を深めるうえで、この違いを体験しておくことはとても役に立ちます。「メソッドごとに役割が決まっている」という点を押さえておくと、次に実際の処理を書いたときにも迷わず進められるようになります。
3. PHPでREST APIを作るために必要な環境
REST APIを作るには、まずPHPが動作する環境が欠かせません。初心者の方でも準備しやすいのが、XAMPPやMAMPといった無料で使えるローカル環境です。これらのソフトをインストールすると、PHP・Apache(Webサーバー)・MySQLなどがまとめて利用できるようになり、自宅のパソコンを簡易的なサーバーとして扱えるようになります。実際にAPIのコードを書いて動作を確かめる「練習場所」として非常に使いやすい環境です。
イメージとしては、料理を学ぶときの「試し厨房」のようなものです。本番のレストランにいきなり出すのではなく、安全に試作を繰り返して味を整えていく場所がローカルサーバーです。ここで動作確認ができれば、次のステップとしてレンタルサーバーやクラウドサービスに公開することで、外部のアプリや利用者からアクセスできる本物のREST APIとして動かせます。
なお、XAMPPを使って実際にPHPが動いているか確認するためのとても簡単なサンプルを紹介します。以下のコードを「test.php」として保存し、ブラウザで開いてみてください。
<?php
// PHPの動作確認サンプル
echo "PHPが正しく動作しています!";
?>
このように画面に表示されれば、その環境でREST APIも問題なく動かせる準備が整っています。まずは自分の作業環境をしっかり整えることが、API開発の第一歩になります。
4. PHPでREST APIの基本部分を作ってみよう
ここからは、PHPでREST APIがどのように動くのかを実際のコードを見ながら理解していきます。APIは外部のアプリやブラウザへデータを返す仕組みなので、まず「どんな形式で返すか」を明確にする必要があります。一般的にはJSONというデータ形式が利用され、これは人間にも読みやすく、機械にも扱いやすい特徴を持っています。
header('Content-Type: application/json; charset=UTF-8');
この1行がAPIの大切な入口部分です。「これから返すデータはJSONですよ」と相手に伝える役割があり、アプリやブラウザが正しく情報を読み取るために欠かせない設定です。初めて触れる方は難しく感じるかもしれませんが、APIを作るうえでは毎回使う基本設定なので、まずは雰囲気だけでも覚えておいて大丈夫です。
次に、実際にAPIが返すデータをPHPで準備します。今回はとても簡単な例として、メッセージを1つ返すだけのAPIを作ってみます。
$data = [
'message' => 'APIへようこそ!これは基本的なレスポンス例です。',
'status' => 'success'
];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
このコードでは、配列として用意したデータを json_encode 関数でJSONに変換し、そのまま画面(またはアプリ側)へ返しています。実際にブラウザで実行してみると文字だけが並んだJSON形式のデータが表示され、「APIが動いている」という感覚をつかむことができます。
初心者の方はまず、この「データを配列で作り、JSONに変換して返す」という基本パターンを理解することが大切です。この流れが分かれば、より複雑なAPIの制作にもスムーズに進めるようになります。最初はシンプルでも、ここがREST API開発の第一歩となる重要な基礎部分です。
5. GETメソッドでデータ取得APIを作る
REST APIでは、最もよく利用される操作のひとつが「GETメソッド」です。GETはデータを取得するためのメソッドで、たとえば商品一覧やユーザー情報、ニュースのリストなどを表示したいときに使われます。Webサイトでもアプリでも広く利用されており、PHPで作るREST APIでもまず理解しておきたい基本的な動作です。
GETメソッドを使うAPIは、URLにアクセスするだけでデータを返すシンプルな仕組みが特徴です。実際にどう動くのかを知るために、簡単なサンプルを見てみましょう。
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
// ここではフルーツの一覧データを用意しています
$items = [
['id' => 1, 'name' => 'りんご'],
['id' => 2, 'name' => 'みかん'],
['id' => 3, 'name' => 'ぶどう']
];
// JSONとして画面に出力
echo json_encode($items, JSON_UNESCAPED_UNICODE);
}
このコードをサーバーに置いてブラウザで開くと、画面にJSON形式のデータが表示されます。URLにアクセスするだけでデータが取得できるため、プログラミング初心者の方でも動作確認がしやすい仕組みです。また、アプリやJavaScriptからこのURLにアクセスすれば、同じようにデータを受け取ることができます。
GETメソッドは「ただ見るだけ」「一覧を取り出すだけ」といった用途に最適で、REST APIの中でも特に使用頻度の高い操作です。最初にこの動きを理解しておくと、今後のAPI開発でどのようにデータを扱うかが自然とイメージしやすくなります。
6. POSTメソッドでデータ登録APIを作る
POSTメソッドは、REST APIで「新しいデータを登録するとき」に使われる代表的な操作です。例えばユーザー登録や商品追加など、外部から送られた情報を受け取って処理したい場合にとても便利です。GETが“見るだけ”の操作だとすれば、POSTは“情報を書き込む”ための操作と考えるとイメージしやすくなります。
PHPでは、アプリやJavaScriptから送られてきたJSONデータを php://input という場所から受け取ることができます。プログラミング未経験の方でも試しやすいように、まずは受け取ったデータをそのまま返す簡単なサンプルを見てみましょう。
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// アプリやフォームから送られたデータを読み取る
$json = file_get_contents('php://input');
// JSONをPHPの配列として使える形に変換
$data = json_decode($json, true);
// 受け取った内容をそのまま返すシンプルなレスポンス
echo json_encode([
'received' => $data,
'status' => 'created',
'message' => 'データを受信し、正常に処理しました。'
], JSON_UNESCAPED_UNICODE);
}
このサンプルでは、送られてきたデータを一度受け取り、それをJSONとして返すだけのシンプルな動作を行っています。実際にツールやアプリからデータを送ってみると、どんな内容が受け取れているかが確認できるため、初心者でもPOSTメソッドのしくみを理解しやすいはずです。
POSTは、REST APIの中でも特に利用される機会が多い基本操作です。まずは「データを受け取り、そのまま返してみる」という小さな体験から始めることで、API開発の流れがぐっとわかりやすくなります。
7. APIのURL設計も重要なポイント
REST APIを作る際に意外と見落とされがちなのが「URL(エンドポイント)の設計」です。URLは利用する人やアプリにとって“案内板”のような役割を持ち、何を返してくれるAPIなのかがひと目で分かるようにしておくことがとても大切です。例えば「/items」は商品の一覧、「/items/1」は商品番号1の詳細というように、役割ごとにルールを決めて整理しておくと、後で自分が見返したときにも理解しやすくなります。
初心者の方はまず「できるだけ意味のある英単語を使う」ことを意識すると良いでしょう。名前がわかりやすいほど使う側も迷わずに済み、結果としてAPI全体の品質が上がります。また、アプリの機能が増えてきたときにも整ったURL構造は管理のしやすさに大きく貢献します。
以下は、ごくシンプルなURL設計の一例をまとめたものです。実際のデータベースを扱わなくてもイメージしやすいよう、どんな役割のAPIなのかだけを一覧にしました。
/items → 商品一覧を取得するAPI
/items/1 → 商品ID 1 の詳細情報を取得するAPI
/users → ユーザーの一覧情報を取得するAPI
/users/5 → ユーザーID 5 の詳細情報を取得するAPI
このようにパターン化されたURLは、「見ただけで何の情報が取れるかがわかる」という大きなメリットがあります。直感的に理解しやすいため、プログラミングに慣れていない初心者でも扱いやすく、アプリ開発の中で混乱しにくくなるという点でも非常に重要です。慣れてきたら、自分の作りたいサービスに合わせて最適なURL構造を考えてみるとよいでしょう。
8. セキュリティに配慮したAPI作りの基本
REST APIは外部と直接データをやり取りする仕組みのため、安全に動作させるためのセキュリティ対策が欠かせません。特に、外部から送られてくるデータをそのまま信じて処理してしまうと、不正アクセスや予期せぬ動作につながる危険があります。まずは「入力チェック」を行い、想定外の値が入り込まないようにすることが基本です。
もう一つ大切なのが「認証」です。APIを誰でも自由に使える状態にしてしまうと、意図しないアクセスが増えたり、サーバーに負担がかかったりする可能性があります。一般的にはAPIキーやトークンを利用し、正しい利用者だけがアクセスできるように制御します。初心者の方はまず「アクセスできる人を制限する」という考え方を押さえておくと理解しやすくなります。
また、やり取りするデータが盗み見られないようにするために、HTTPSで通信を行うことも重要です。これにより、データが暗号化され、安全な状態で送受信できます。以下は、とても簡単な例として「入力データが空の場合にエラーを返す」という基本的なセキュリティチェックのサンプルです。
<?php
header("Content-Type: application/json; charset=UTF-8");
$input = file_get_contents("php://input");
$data = json_decode($input, true);
// 入力データが空の場合はエラーを返す
if (empty($data)) {
echo json_encode([
"status" => "error",
"message" => "入力データが不足しています。"
], JSON_UNESCAPED_UNICODE);
exit;
}
// 正常な場合は処理を続ける(例としてそのまま返す)
echo json_encode([
"status" => "success",
"received" => $data
], JSON_UNESCAPED_UNICODE);
?>
このような小さなチェックを積み重ねることで、APIの安全性は大きく向上します。最初はシンプルな対策から始め、少しずつ必要なセキュリティを追加していくことで、安心して利用できるAPIへと育てていくことができます。
まとめ
PHPでREST APIを作る流れを振り返ると、初心者にとって最初は難しそうに見える部分も、ひとつひとつ噛み砕くことで理解しやすくなることがわかります。REST APIは、Webサービスやアプリが外部とやり取りするための大切な仕組みであり、PHPという身近な言語で構築できる点は大きな魅力です。特に、HTTPメソッドの役割を正しく理解することは重要で、GETで情報を取り出し、POSTで新しい情報を登録し、PUTで更新し、DELETEで削除するといった操作は、どのAPIにも共通する基本的な動きになります。この流れを理解すると、APIがどのように動き、どんなときに呼び出されるのかが自然とイメージしやすくなります。
実際にPHPでAPIを作る際には、正しいヘッダーを設定し、JSON形式のデータを返すことが不可欠です。JSONは多くのプログラミング言語と相性が良く、アプリケーション間のやり取りに最適な形式です。データを配列で用意してjson_encodeでJSONへ変換するだけでAPIとして動作するため、仕組みを知れば驚くほどシンプルに感じられるでしょう。また、PHPには入力データを受け取るphp://inputが用意されているため、POSTメソッドで送られたJSONデータもスムーズに扱うことができます。受け取ったデータをjson_decodeで配列へ変換すれば、アプリから送られた情報を元に処理を行えるようになります。
さらにAPIの魅力を深めるには、URL設計やセキュリティのポイントも理解しておくことが大切です。URLを役割ごとに整理することで利用する側がAPIを直感的に理解でき、必要なデータに迷わずアクセスできるようになります。セキュリティの基本としては、APIキーやトークン認証などを使うことで、許可された相手だけがアクセスできるようにします。公開する情報を限定し、余計なデータを外部に出さない意識を持つことで、安全なAPIを提供できます。また、HTTPSによる通信暗号化は現代では必須ともいえる対策で、データを守るために不可欠です。初心者のうちは理解しやすい部分から進めながら、徐々にセキュリティの重要性も意識していくと良いでしょう。
最後に、PHPでREST APIを構築する際の具体的なイメージをより掴めるよう、基本をまとめたプログラムを紹介します。これを参考にしながらAPIの動作を体験すれば、Webサービスの仕組みがより立体的に見えるようになり、自分で作ってみたいという気持ちが大きくなるはずです。PHPとJSON、HTTPメソッドの関係が自然とつながり、実践的なプログラム作成に活かせる力が身につきます。
サンプルプログラム(まとめ)
<?php
header("Content-Type: application/json; charset=UTF-8");
$method = $_SERVER["REQUEST_METHOD"];
if ($method === "GET") {
echo json_encode([
"status" => "success",
"items" => [
["id" => 1, "name" => "りんご"],
["id" => 2, "name" => "みかん"]
]
], JSON_UNESCAPED_UNICODE);
}
if ($method === "POST") {
$json = file_get_contents("php://input");
$data = json_decode($json, true);
echo json_encode([
"status" => "created",
"received" => $data
], JSON_UNESCAPED_UNICODE);
}
?>
このプログラムでは、GETとPOSTを判定して内容を返す簡易的なREST APIを実現しています。JSON形式でのデータ返却、php://inputからの受信、json_decodeによる配列化といったAPIの基本要素がひとまとめになっているため、初心者にとって最初の理解に役立つ構成になっています。Web開発の裏側では、このようなAPIがデータを支え、画面表示やアプリ操作を成立させています。API開発は実践と反復で確実に力がついていくため、小さなAPIから作り始めて徐々に規模を広げていくと良いでしょう。
生徒
「REST APIがどんなものなのか、そしてPHPでどんなふうに作るのかがだいぶ理解できました。難しそうなイメージがあったけど、基本の流れはシンプルなんですね。」
先生
「そうなんです。仕組みがわかると一気に扱いやすくなりますよ。特にGETやPOSTのようなHTTPメソッドの役割が理解できると、APIの動きが自然と整理されて見えてきます。」
生徒
「json_encodeでデータを返すところも、意外と簡単でした。スマホアプリやJavaScriptと連携できる理由もよくわかりました。」
先生
「その調子です。今回学んだことをベースにして、少しずつ複雑なAPIにも挑戦できますよ。セキュリティの意識も忘れずに続けていきましょう。」
生徒
「まずは今日のサンプルを動かしてみて、仕組みを体で覚えてみます!」