REST-API(RESTful)とは?
Webで外部呼出しの方式の一つで、例えばRuby on Railsでルーティングを定義する場合に現在は知っていて当たり前の設計思想になっています。
リソースとは?
RESTful-APIではリソースという概念が出てきますが、実体は主にデータベースに保存されているデータのことです。
REST-APIの設計思想
セッション等で状態管理は行わず、やり取りされる情報は、それ自体で完結していること。
RESTでは、「状態」を持ちません。
なので、SNS等の多くのアクセスが予想されるサービスの開発に向いています。
URLの決定単位は、リソース単位
RESTではないアプリの場合は、登録、更新、削除等の処理単位でURLが決まります。
ただ、REST-APIの場合は処理単位でURLが決まるのではなく、リソース(ネットワーク上のコンテンツ)単位でURLが決まります。リソースに対するCRUD操作はすべてHTTPメソッドで表現をします。
リソースへの操作表現がHTTPメソッドとして統一されている。
操作表現を統一するために一般的なブラウザがサポートしているGET/POSTだけでなくPATCH、PUT、DELETEと言ったHTTPメソッドをサポートしています。
HTTPメソッド
メソッド名 | 処理 |
---|---|
GET | 取得 |
POST | 登録 |
PATCH | 更新 |
PUT | 更新 |
DELETE | 削除 |
GET
- 検索処理
- 情報の取得
- ダウンロード処理
- 一覧表示処理
POST(PUT)
- データ作成、追加処理
- 画像のアップロード処理
- SNSでのステータスの共有処理
また、POSTメソッドは適したメソッドがない場合に使われるデフォルトのメソッドでもあります。(例えば、ショッピングカートのチェックアウト処理等)
PATCH/PUT
- 情報更新処理(ステータス変更処理)
- 商品交換処理
DELETE
- 情報の削除処理
- 商品のキャンセル処理
- クローズ処理
- タイマーの停止処理
REST-APIのメリット、デメリット
メリット
- ステートレスな通信なので、アクセス集中に耐えやすい。(SNS開発によく使われています。)
デメリット
- 従来のプログラミング言語ではステートレス指向ではないので、ソースコードが簡潔にはなりにくい。
どの程度RESTを追求するべきか。
リソースの階層が浅い場合はそれほど苦労なくRESTは実装することが可能です。しかし、リソースの階層が深くなっていくとRESTの実装が大変になっていきます。なので、現実的にはRESTの原則を理解しつつRailsで実装しやすい範囲で実現するのが良いでしょう。
実装について
GETやPOST等のHTTPメソッドを送信したから自動でリソースを良きようにRESTが更新してくれるというわけではなく各HTTPメソッドによってどのような処理を行わせるのかはプログラマーの実装によって行われます。RESTはあくまで設計における概念的な物というような認識が必要になります。
この記事へのコメントはありません。