REST APIとは
REST APIの意味
REST APIは厳密にいうとRESTful APIのことであり、RESTfulであるAPIのことです。
APIはエンジニアの皆さんなら聞き慣れている単語だと思いますが、イメージがわかない方に向けて言うならプログラミングを楽にする機能のことです。
特に他のシステムと連携したいときはAPIは必須ですね。例えばLINEにメッセージを送信したいときなどはLINEのAPIを使えばいいのです!
このAPIがRESTな状態であるものをREST APIと言います。
ではRESTは何かというと、REpresentational State Transferの略で頭文字をとってRESTと言い、「分散システムにおいて複数のソフトウェアを連携させるのに適した設計原則の集合」だと言われています。
これではいまいちわからないのですが、REST APIは4つの原則を満たしています。原則は次でご説明します。
REST APIの原則
REST APIには4つの原則があります。
- ステートレスなクライアント/サーバプロトコルである
- すべての情報 (リソース) に適用できる「よく定義された操作」のセットである
- リソースを一意に識別する「汎用的な構文」である
- アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」である
これらを満たしているときにREST APIとなります。ではもう少し細かく説明していきます。
1. ステートレスなクライアント/サーバプロトコルである
サーバーはクライアントの情報をセッションなどで保持せずに、やり取りされる情報はそれ自体で完結して解釈できる必要があるということです。
これをよくハンバーガーショップの話が例に挙げられて説明されますね。客に注目してみてください。
店員「いらっしゃいませ。」
客 「ハンバーガーください。」
店員「飲み物はどうしますか?」
客 「ハンバーガーとコーラください。」
店員「サイドメニューはどうしますか?」
客 「ハンバーガーとコーラとポテトください。」
店員「かしこまりました。」
違和感あったと思います。このようにお客が言った注文を店員が記憶していないので、毎回ハンバーガーなど伝えないといけません。これがステートレスであり、それ自体で完結していると言えます。
すべての情報 (リソース) に適用できる「よく定義された操作」のセットである
HTTPメソッドを意識する必要があるという意味です。
HTTPメソッドでよく使われるのに以下の4つがあり、それぞれの操作が割り当てられます。
- GET・・・リソースの取得
- POST・・・リソースの作成
- PUT・・・リソースの更新
- DELETE・・・リソースの削除
これらをCRUDと言われますが、これらのセットをしっかりと割り当てる必要があります。
HTTPメソッドに関してはこちらの記事でご紹介しているので、よかったら見てみてください!
リソースを一意に識別する「汎用的な構文」である
URIがわかりやすい名前である必要があるという意味です。わかりやすいとは開発者が見て覚えやすく、どんな機能を持つか一目でわかる必要がありますね。
URIはURLのような形式で記載して、エンドポイントとも呼ばれます。例えば
http://sample.com/user
このようなものを言います。
この時にわかりやすい設計するためにはいくつかポイントがあります。
- 短くて覚えやすい(単語の意味に気をつける)
- 複数形にした名詞をつなげる(動詞をいれない)
- 小文字で統一する(大文字を混在させない)
- 単語をつなげる場合はハイフンでつなげる
これらのポイントは人によって変わってきたり、現場の規則で決まっていたりするので参考までにしてください。
アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」である
これは単純にハイパーメディアを使うことという意味です。
ハイパーメディアにはhtml, xml, jsonがあります。これらを使っておけば問題ないですね。
REST APIのメリット
開発者が管理しやすい
URIとHTTPメソッドに規則があるので開発者が管理しやすくなります。
また、見ただけで機能を想像しやすいので、改修もしやすくなります。
スケーラビリティの向上
サーバ/クライアント間でやり取りせず、ステートレスなのでアクセスの集中に耐えやすくなります。
終わりに
読んでいただきありがとうございます。REST APIについて理解して頂けましたか?
あまり馴染みがない言葉ですが、最近は当たり前にいろんなサービスがAPIを公開しているので、知っておいて損はないと思います。
私はこの頃、LINEのAPIやTwitterのAPIで何か作れないかと企んでいます笑