REST API
REST API
概要(サマリー)
REST APIとは、Web上のデータや機能を、リソースを表すURLとHTTPメソッドを使って分かりやすくやり取りするためのAPI設計スタイルのことである。
たとえば、商品一覧を取得したいときは GET /products、新しい注文を作りたいときは POST /orders のように、URLと操作の種類を組み合わせてサーバーへリクエストを送る。初心者向けには、「Web上のデータを、決まった窓口にお願いして取り出したり更新したりする仕組み」と考えるとわかりやすい。AIコーディングでも、フロントエンドとバックエンドをつなぐ場面でよく登場する。
詳細解説
REST APIは「Webのルールを使ったAPI」である
APIとは、アプリやサービス同士がデータや機能をやり取りするための窓口である。
その中でもREST APIは、HTTPというWebの通信ルールを使って、データの取得・作成・更新・削除などを行う設計スタイルである。
たとえば、次のようなAPIがあるとする。
GET /products
GET /products/123
POST /orders
PATCH /users/123
DELETE /cart/items/5
これらは、URLで対象を示し、HTTPメソッドで操作内容を示している。
つまりREST APIでは、「何を対象にするか」と「何をしたいか」を分けて表現する。
RESTとは何か
RESTは Representational State Transfer の略である。
厳密には、Webシステムを設計するための考え方や制約の集まりを指す。
ただし初心者のうちは、細かな理論を最初から深追いしなくてよい。
まずは、REST APIを次のように理解すると分かりやすい。
- URLでデータや対象を表す
- HTTPメソッドで操作を表す
- サーバーからJSONなどのデータを返す
- クライアントとサーバーが役割を分けて通信する
このような考え方に沿って作られたAPIが、一般にREST APIやRESTful APIと呼ばれる。
ただし厳密には、URLとHTTPメソッドを使っていれば必ずRESTになるわけではない。RESTは、リソースの扱い方やステートレス性なども含む設計思想である。
なぜREST APIがよく使われるのか
REST APIが広く使われる理由は、Webの標準的な仕組みに乗せやすいからである。
ブラウザ、スマホアプリ、サーバー、JavaScriptの fetch、外部サービス連携など、多くの環境がHTTP通信に対応している。
そのためREST APIは、さまざまなシステムから使いやすい。
たとえば、次のような場面で使われる。
- フロントエンドから商品データを取得する
- スマホアプリからログイン処理を行う
- 管理画面からユーザー情報を更新する
- 外部サービスへ注文データを送る
- AIツールからWebサービスの機能を呼び出す
つまりREST APIは、Webアプリやサービス連携の基本的な通信方式として非常によく使われる。
URLは「対象」を表す
REST APIでは、URLは操作そのものではなく、対象となるデータやリソースを表すことが多い。
たとえば、商品を扱うAPIなら次のようになる。
/products
/products/123
ここで、
/productsは商品一覧や商品全体/products/123はIDが123の商品
を表している。
初心者がやりがちな設計として、次のようなURLがある。
/getProducts
/createOrder
/deleteUser
このような書き方も動かすことはできるが、RESTの考え方では、URLには「対象」を置き、操作はHTTPメソッドで表すほうが自然である。
HTTPメソッドは「操作」を表す
REST APIでは、HTTPメソッドによって何をしたいかを表す。
代表的なHTTPメソッドは次の通りである。
- GET
データを取得する - POST
新しいデータを作成する、または送信する - PUT
データ全体を更新する - PATCH
データの一部を更新する - DELETE
データを削除する
たとえば、ユーザー情報を扱うAPIなら次のように整理できる。
GET /users ユーザー一覧を取得
GET /users/123 ユーザーID 123 の情報を取得
POST /users 新しいユーザーを作成
PATCH /users/123 ユーザーID 123 の一部を更新
DELETE /users/123 ユーザーID 123 を削除
このように、URLとHTTPメソッドを組み合わせることで、APIの意味が分かりやすくなる。
Endpoint との関係
REST APIでは、Endpoint という言葉もよく出てくる。
Endpointとは、APIへリクエストを送る具体的な接続先のことである。
たとえば、次のようなものがEndpointである。
GET https://api.example.com/products
POST https://api.example.com/orders
REST APIを使う側は、このEndpointに対してHTTPリクエストを送る。
サーバー側は、そのリクエストを処理してHTTPレスポンスを返す。
つまり、REST APIの実際の入口がEndpointであり、そこへ送るお願いがHTTP Request、その返事がHTTP Responseである。
JSONでデータをやり取りすることが多い
REST APIでは、データ形式としてJSONがよく使われる。
たとえば、商品データを取得すると、次のようなレスポンスが返ってくることがある。
{
"id": 123,
"name": "Sample Tote Bag",
"price": 980
}
JSONは、JavaScriptや多くのプログラミング言語で扱いやすい形式である。
そのため、WebアプリやスマホアプリでAPIのデータを受け取り、画面に表示する場面でよく使われる。
ただし、REST APIが必ずJSONだけを使うわけではない。
XMLやテキストなど別形式を返すこともあるが、現代のWeb APIではJSONがかなり一般的である。
HTTPステータスコードも重要になる
REST APIでは、処理結果をHTTPステータスコードで表すことが多い。
代表的な例は次の通りである。
200 OK
正常に取得・処理できた201 Created
新しいデータを作成できた400 Bad Request
リクエスト内容が不正401 Unauthorized
認証が必要403 Forbidden
権限がない404 Not Found
対象が見つからない500 Internal Server Error
サーバー側でエラーが起きた
たとえば、存在しない商品IDにアクセスした場合は、404 Not Found を返すのが自然である。
このように、REST APIではレスポンスの中身だけでなく、ステータスコードも重要な情報になる。
フロントエンドとの関係
REST APIは、フロントエンドとバックエンドを分けて開発するときによく使われる。
たとえば、画面側のJavaScriptでは、次のようにAPIへリクエストを送ることがある。
fetch("https://api.example.com/products")
.then(response => response.json())
.then(data => {
console.log(data);
});
この例では、商品一覧のEndpointにGETリクエストを送り、返ってきたJSONデータを画面側で利用している。
つまり、REST APIは「バックエンドにあるデータや処理を、フロントエンドから呼び出すための窓口」として使われることが多い。
CRUDとの関係
REST APIでは、CRUD という考え方もよく関係する。
CRUDとは、データ操作の基本である次の4つを指す。
- Create
作成 - Read
読み取り - Update
更新 - Delete
削除
REST APIでは、これらをHTTPメソッドに対応させることが多い。
Create → POST
Read → GET
Update → PUT / PATCH
Delete → DELETE
たとえば、商品管理APIやユーザー管理APIを作るときは、このCRUDの考え方でEndpointを整理すると分かりやすい。
RESTful APIとは何か
RESTful APIとは、RESTの考え方に沿って設計されたAPIという意味で使われる言葉である。
ただし、実務では「REST API」と「RESTful API」がかなり近い意味で使われることも多い。
厳密には、RESTの制約にきちんと従っているものをRESTfulと呼ぶ考え方もあるが、初心者のうちはそこまで細かく区別しなくてもよい。
まずは、RESTful APIを「RESTっぽいルールに沿って作られたAPI」と理解すれば十分である。
GraphQLとの違い
REST APIとよく比較されるものに GraphQL がある。
- REST API
複数のEndpointを用意し、URLとHTTPメソッドで操作する - GraphQL
ひとつの入口に対して、欲しいデータの形をクエリで指定する
REST APIでは、たとえば商品情報とレビュー情報を取得するために複数のEndpointへアクセスすることがある。
GraphQLでは、欲しいデータをクエリで細かく指定し、必要な形でまとめて取得できる場合がある。
ただし、GraphQLのほうが常に優れているという話ではない。
REST APIは分かりやすく、HTTPの考え方に沿って設計しやすいため、今でも広く使われている。
SOAPとの違い
REST APIと比較される古い形式として SOAP がある。
- REST API
HTTPとURLを使い、比較的シンプルにデータをやり取りする設計が多い - SOAP
XMLベースで、厳格な仕様に沿ってメッセージをやり取りする方式
SOAPは企業システムや古い業務システムなどで使われることがある。
一方、Webサービスやスマホアプリ、軽量なAPI連携ではREST APIが使われることが多い。
初心者のうちは、「REST APIはWebでよく使われる比較的分かりやすいAPI設計」と覚えておけばよい。
REST APIを作るときの注意点
REST APIは便利だが、ただURLを用意すればよいわけではない。
Endpoint名を分かりやすくする
/data1 や /doSomething のような名前より、/products や /orders のように対象が分かる名前にしたほうが使いやすい。
HTTPメソッドを適切に使う
取得はGET、作成はPOST、削除はDELETEのように、目的に合ったメソッドを使う。
ステータスコードを適切に返す
エラーでも常に 200 OK を返すと、使う側が処理結果を判断しにくくなる。
認証と権限を確認する
ユーザー情報や注文情報などを扱うAPIでは、誰がどのデータにアクセスできるかを必ず確認する必要がある。
入力値を検証する
AIやフロントエンドが送るデータをそのまま信用せず、サーバー側でもバリデーションを行うことが重要である。
AI時代にREST APIの理解が重要な理由
AIにWebアプリを作らせると、REST APIは非常によく登場する。
たとえば、次のような依頼で使われる。
- 商品一覧を返すAPIを作って
- フロントエンドからREST APIをfetchして表示して
- ログイン用Endpointを追加して
- ユーザー情報を更新するAPIを作って
- API仕様書を作って
このときREST APIの意味が分かっていないと、URL、HTTPメソッド、Endpoint、Request、Response、Status Codeの関係が見えにくい。
逆に、REST APIを「URLとHTTPメソッドでデータをやり取りする設計」と理解していれば、AIが作ったコードや仕様書をかなり読みやすくなる。
ただし、AIが生成したAPIをそのまま公開するのは危険な場合がある。
認証、権限、入力チェック、エラー処理、返すデータの範囲などは必ず確認したい。
初心者向けの理解の仕方
最初は、REST APIを「Web上のデータを、決まったURLにお願いして取得・更新する仕組み」と覚えれば十分である。
ただし、より正確には、データや機能をリソースとして扱い、HTTPの仕組みに沿ってやり取りするAPI設計スタイルである。
そして、次のように整理すると理解しやすい。
- Endpoint = APIの受付窓口
- HTTP Request = そこへ送るお願い
- HTTP Method = 取得・作成・更新・削除などの操作
- HTTP Response = サーバーからの返事
- JSON = よく使われるデータ形式
この関係が分かると、API通信やフロントエンド・バックエンド連携の理解が一気に進みやすくなる。
よくある勘違い
REST API = APIそのもの?
同じではない。
APIは広い概念であり、REST APIはその中の代表的な設計スタイルのひとつである。
REST APIは必ずJSONを返す?
必ずではない。
JSONがよく使われるが、XMLやテキストなど別形式を返すこともある。
URLだけ決めればREST APIになる?
それだけでは不十分である。
HTTPメソッド、ステータスコード、データ形式、認証、エラー処理なども含めて設計する必要がある。
GETとPOSTだけ分かれば十分?
最初はGETとPOSTからでよいが、実務ではPUT、PATCH、DELETEなども理解しておくとAPI設計が整理しやすい。
AIが作ったREST APIはそのまま公開してよい?
注意が必要である。
動作するだけでは不十分で、認証、権限、入力チェック、レスポンス内容、エラー処理を確認する必要がある。
AIコーディングとの関係
AIにコード生成や修正を依頼するとき、REST APIの意味を理解していると、出力されたコードやエラー内容を判断しやすくなる。
Web上のデータや機能を、リソースを表すURLとHTTPメソッドを使って分かりやすくやり取りするためのAPI設計スタイルのこと。
AIへ相談するときは、「何をしたいのか」「どの環境で起きているのか」「どのファイルやエラーを見ているのか」を一緒に伝えるとよい。
用語だけを投げるより、具体的な状況と期待する結果を添えることで、より実用的な回答を得やすくなる。
まとめ
- REST APIは、Web上のデータや機能を、リソースを表すURLとHTTPメソッドを使って分かりやすくやり取りするためのAPI設計スタイルのこと。
- 関連する用語や実際の作業場面と一緒に理解すると、使いどころを判断しやすい。
- AIコーディングでは、用語の意味を理解しているほど、AIの説明や生成コードを確認しやすくなる。
- 迷ったときは、エラー内容、目的、前提条件を整理してAIに聞くとよい。
より詳しくAIに聞いてみよう
- REST APIとは何かを、中学生でもわかるように具体例つきで説明してください。
- REST APIとWeb APIとGraphQLの違いを、初心者向けに整理してください。
- REST APIでGET、POST、PUT、PATCH、DELETEをどう使い分けるか教えてください。
- REST APIのEndpoint設計で気をつけることを、具体例つきで説明してください。
- AIにREST APIを作らせるとき、セキュリティ面で確認すべきことを教えてください。