RESTfulなWebAPIとは? HTTP通信におけるAPI設計の基礎知識を解説

TwitterやGoogleなどのサービスを外部から利用するために開発者用APIを叩いたり、自社のサービスを構築するときにAPIを叩く形でデータのやりとりをする設計にしたりと、WebAPIはエンジニアにとって避けては通れないものになりました。

そして、様々なAPIが作られていった結果、現在、RESTFUL APIというAPIの設計思想が、API開発者にとってのスタンダードになっています。

本日は、RESTFUL APIとはどういうものか?を解説していきます。

REST APIの条件

RESTなAPIの条件は、以下の3つです。

  • 用途に応じて4つのHTTPメソッドを使い分けること
  • ステートレスであること
  • レスポンスとともにステータスコードが返ってくること

 

用途に応じて4つのHTTPメソッドを使い分けること

CRUDというwebシステムを作る際に使われるデータ処理方法があります。

Create Read Update Delete
作成 取得 更新 削除

CRUDというのは、以上のような構成になっていて、この4つの処理でほぼすべてのシステム処理を完結することができます。

そして、REST APIでは、用途に応じてこの4つの処理に対応するHTTPメソッドを指定しなければなりません。

Read (取得)・・・HTTP GET

生徒一覧や会員一覧などを取得(Read)したい場合、HTTP GETを使います。

GET  http://○○.com/students/:studentID

という形で、生徒のIDを指定して、該当する生徒の情報をサーバーに要求します。

Create (作成)・・・HTTP POST

新規で生徒や会員を登録(Create)したい場合、HTTP POSTを使います。

POST  http://○○.com/students/

という形で、POSTでアクセスすることで、自動でIDをつけて新しい生徒を登録します。

自動で生成されたIDを利用することで、上で説明したGETや後ほど説明するPUT・DELETEで生徒とIDを結びつけます。

Update (更新)・・・HTTP PUT

既に存在する生徒や会員の情報を変更(Update)したい場合は、HTTP PUTを使います。

PUT  http://○○.com/students/:studentID

という形で、情報を変更したい生徒のIDを指定して、既存の情報を更新します。

Delete (削除)・・・HTTP DELETE

生徒や会員を削除(Delete)したい場合は、HTTP DELETEを使います。

DELETE  http://○○.com/students/:studentID

削除処理は非常にシンプルで、削除したいIDを明示して、DELETEでアクセスするだけです。

 

Create Read Update Delete
作成 取得 更新 削除
POST GET PUT DELETE

HTTPメソッドをCRUDに対応させるとこのような表になります。

そして、この4つのメソッドを適宜使い分けて、設計していくことがRESTなWeb APIの条件です。

 

ステートレスであること

ステートレスとは「状態がない」ことを表します。

つまり、

いつ・誰が・どんな状況でアクセスしても、同じ結果を返す

ことが、REST APIの条件になります。

この条件のお陰で、

  • 設計がシンプルになる
  • セッション管理などをあまり気にしなくてよくなる
  • 外部開発者がAPIの構造をすぐに理解できる

といったメリットがあります。

 

レスポンスとともにステータスコードが返ってくる

REST APIはHTTPメソッドを利用しています。そのため、通常のHTTP通信と同じくHTTPステータスコードを返却します。

200 成功 処理が正常終了
302 リダイレクト リダイレクトされた
404 不明 ページが存在しない
500 失敗 サーバーでエラーが発生

以上が基本的なHTTPステータスコードなので、APIを作る際には、以上のステータスコードが返るようにしましょう。

 

まとめ

REST APIは現在のweb開発において必須の技術であり、誰でも開発しやすく・第三者がすぐに理解できる仕様になっています。

新しくWebサービスを作る際にAPI指向でサービス開発をしたり、外部(GoogleやTwitter等)のAPIを利用してみて、その便利さを体験してみてください!

ABOUTこの記事をかいた人

新卒ノマドエンジニアとして独立し、半年で月収100万円を達成する。フリーランスのエンジニアとして活動しながら、事務所を売却(バイアウト)したり、Youtuber(最高月間視聴回数109万回、チャンネル登録者1万人)をしたり、Openrecの公式配信者としてゲーム生実況をしたり、ベンチャー企業のCOOをしたり、パラレルキャリアを歩んでいる。 2019年にミニマムライフコストを不労所得で稼げるようになったため、いまは好きなことだけ仕事にしています。