REST APIとは?REST APIを正しく理解して設計しよう!

プログラミング
スポンサーリンク

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つの原則があります。

  1. ステートレスなクライアント/サーバプロトコルである
  2. すべての情報 (リソース) に適用できる「よく定義された操作」のセットである
  3. リソースを一意に識別する「汎用的な構文」である
  4. アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」である

これらを満たしているときにREST APIとなります。ではもう少し細かく説明していきます。

1. ステートレスなクライアント/サーバプロトコルである

サーバーはクライアントの情報をセッションなどで保持せずに、やり取りされる情報はそれ自体で完結して解釈できる必要があるということです。

これをよくハンバーガーショップの話が例に挙げられて説明されますね。客に注目してみてください。

店員「いらっしゃいませ。」
客 「ハンバーガーください。」
店員「飲み物はどうしますか?」
客 「ハンバーガーとコーラください。」
店員「サイドメニューはどうしますか?」
客 「ハンバーガーとコーラとポテトください。」
店員「かしこまりました。」

違和感あったと思います。このようにお客が言った注文を店員が記憶していないので、毎回ハンバーガーなど伝えないといけません。これがステートレスであり、それ自体で完結していると言えます。

すべての情報 (リソース) に適用できる「よく定義された操作」のセットである

HTTPメソッドを意識する必要があるという意味です。

HTTPメソッドでよく使われるのに以下の4つがあり、それぞれの操作が割り当てられます。

  • GET・・・リソースの取得
  • POST・・・リソースの作成
  • PUT・・・リソースの更新
  • DELETE・・・リソースの削除

これらをCRUDと言われますが、これらのセットをしっかりと割り当てる必要があります。

HTTPメソッドに関してはこちらの記事でご紹介しているので、よかったら見てみてください!

リソースを一意に識別する「汎用的な構文」である

URIがわかりやすい名前である必要があるという意味です。わかりやすいとは開発者が見て覚えやすく、どんな機能を持つか一目でわかる必要がありますね。

URIはURLのような形式で記載して、エンドポイントとも呼ばれます。例えば

http://sample.com/user

このようなものを言います。

この時にわかりやすい設計するためにはいくつかポイントがあります。

  1. 短くて覚えやすい(単語の意味に気をつける)
  2. 複数形にした名詞をつなげる(動詞をいれない)
  3. 小文字で統一する(大文字を混在させない)
  4. 単語をつなげる場合はハイフンでつなげる

これらのポイントは人によって変わってきたり、現場の規則で決まっていたりするので参考までにしてください。

アプリケーションの情報と状態遷移の両方を扱うことができる「ハイパーメディアの使用」である

これは単純にハイパーメディアを使うことという意味です。

ハイパーメディアにはhtml, xml, jsonがあります。これらを使っておけば問題ないですね。

REST APIのメリット

開発者が管理しやすい

URIとHTTPメソッドに規則があるので開発者が管理しやすくなります。

また、見ただけで機能を想像しやすいので、改修もしやすくなります。

スケーラビリティの向上

サーバ/クライアント間でやり取りせず、ステートレスなのでアクセスの集中に耐えやすくなります。

終わりに

読んでいただきありがとうございます。REST APIについて理解して頂けましたか?

あまり馴染みがない言葉ですが、最近は当たり前にいろんなサービスがAPIを公開しているので、知っておいて損はないと思います。

私はこの頃、LINEのAPIやTwitterのAPIで何か作れないかと企んでいます笑

スポンサーリンク
プログラミング
スポンサーリンク
この記事を書いた人

フリーランスエンジニアです。
未経験からSIer企業に入社して開発案件でプログラミングを学び27歳でフリーランスになりました。
主にHTML,CSS,JavaScript,Javaを書いています。
本を読むことが好きなのでIT以外にもいろいろ読んでいます。
好奇心旺盛でとりあえずやってみる精神。
楽しいことが生きがいで、仕事も私生活も楽しくなるように日々奮闘中。
お酒を飲みすぎないことが目標

まさきをフォローする
シェアする
まさきのエンジニア図書館
タイトルとURLをコピーしました