REST APIとは
REST(Representational State Transfer)APIは、ウェブサービスの設計アーキテクチャの一つで、HTTPプロトコルを使用してデータをやり取りするための標準化された手法です。RESTは、分散システムやクライアントとサーバー間の通信を効率的に行うために設計されました。REST APIは、特にウェブアプリケーションやモバイルアプリケーションなどのクライアントとサーバー間でデータを交換するために広く使用されています。
REST APIの主要な特徴と概念
リソース指向:REST APIはリソース(データやエンティティ)を表現し、それに対する操作を提供します。これらのリソースは一般的にURLで識別され、HTTPメソッド(GET、POST、PUT、DELETEなど)を使用して操作されます。
ステートレス:RESTはステートレスであるため、各リクエストは独立して処理されます。前のリクエストとの状態を保持しないため、サーバーサイドではセッション情報を維持する必要がありません。これにより、システムの拡張性が向上します。
参考記事
https://apidog.com/jp/blog/what-is-stateless/
標準HTTPメソッド:REST APIはHTTPメソッド(GET、POST、PUT、DELETEなど)を使用して操作を実行します。たとえば、GETリクエストはリソースの取得に使用され、POSTリクエストは新しいリソースの作成に使用されます。
統一されたインターフェース:REST APIは、HTTPリクエストとHTTPレスポンスを介してデータを送受信します。この一貫性のあるインターフェースは、開発者が理解しやすく、使用しやすいです。
プレーンテキストまたはJSON/XML:REST APIは通常、プレーンテキストまたはJSON(JavaScript Object Notation)またはXML(eXtensible Markup Language)形式でデータを送受信します。JSONは特に広く使用されており、データの構造を表現しやすく、解析しやすい形式です。
状態を持たない:RESTはクライアントからのリクエストに応じて状態を持たないため、各リクエストはサーバーに完全な情報を含む必要があります。これにより、サーバーサイドのスケーラビリティが向上し、冗長な状態管理の必要性が低減します。
URLとURIの違い
URLはWeb上での住所
URLは「Uniform Resource Locator」の略で、Web上にあるあらゆるファイルがWeb上のどの位置にあるのかを表したものです。
URL=住所
URNはWeb上での名前
住所ではなくWeb上での「名前」を指すURN(Uniform Resource Name)も存在します。
名前とは言っても、対象の名前そのものではなく、Web上で対象を特定するための固有のシリアルナンバーのようなイメージです。
例えば、Amazon等のネットショップで書籍を検索すると、「ISBN」から始まる英数字の羅列という表記を見かけると思います。
あの英数字の羅列が、その書籍に割り振られたWeb上での識別番号であり、意味合い的にはURNとほぼ同じです。
ただ、URNは一般ユーザーの目に触れることはほとんどありません。
とりあえず、URL=Web上の住所、URN=Web側で認識されている名前
と理解しておきましょう。
URIはURLとURNの総称
URIは「Uniform Resource Identifier」の略で、Web上にあるあらゆるファイルを認識するための識別子の総称で、URNとURLで構成されています。
1つのファイルの「住所」を示すのがURL、「名前」を示すのがURNで、それらの総称がURIです。
URLとURNはURIの枠組みの中にあるため、URL=URIで、URN=URIと考えても問題ないでしょう。
CRUD操作
操作 | メソッド |
---|---|
Create(作成) | POST|PUT |
Read(読み取り) | GET |
Update(更新) | PUT |
Delete(削除) | DELETE |
movie例
映画の作成(Create)
URI: /movies
HTTPメソッド: POST
このURIにPOSTリクエストを送信すると、新しい映画データが作成されます。リクエストの本文に映画の詳細情報が含まれることが一般的です。
映画の読み取り(Read)
URI: /movies/{movie_id}
HTTPメソッド: GET
{movie_id}は特定の映画の一意の識別子(例: 1、2、3など)を示す動的な部分です。このURIにGETリクエストを送信すると、指定したIDの映画情報を取得します。
映画の更新(Update)
URI: /movies/{movie_id}
HTTPメソッド: PUT
{movie_id}は更新対象の映画の一意の識別子を示します。このURIにPUTリクエストを送信し、更新後の映画情報をリクエストの本文に含めます。
映画の削除(Delete)
URI: /movies/{movie_id}
HTTPメソッド: DELETE
{movie_id}は削除対象の映画の一意の識別子を示します。このURIにDELETEリクエストを送信すると、指定したIDの映画データが削除されます。
ブログ例
メソッド: POST
リクエストの本文(Body)にブログの内容を含めて、新しいブログを作成します。URI(Uniform Resource Identifier)はブログの一覧を示すエンドポイントであることが一般的です。
ブログの読み取り(Read)
メソッド: GET
特定のブログの詳細情報を取得するために、ブログのURIにGETリクエストを送信します。URI内にブログの一意の識別子(IDまたは名前)が含まれていることが一般的です。
ブログの更新(Update)
メソッド: PUT
リクエストの本文に更新後のブログの内容を含めて、既存のブログを更新します。URIは更新対象のブログを指し示す必要があります。
ブログの削除(Delete)
メソッド: DELETE
特定のブログを削除するために、ブログのURIにDELETEリクエストを送信します。URI内に削除対象のブログの識別子が含まれていることが一般的です。
post と PUTの違いの参考URL
https://qiita.com/suin/items/d17bdfc8dba086d36115
簡単な違いの説明は
POSTはリソース名が決まっている。
PUTはリソース名が決まっていない。