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を利用してみて、その便利さを体験してみてください!