目的
最近流行のpython, djangoを触ってAPIを実装しようとしたときに、django_restframeworkなるもので簡単にRESTAPIが実装できると言うことを知ったものの、RestfulなAPIとはどのようなものか完全には理解できていなかったためここで同じように曖昧なイメージを持っている方々に共有してみむとせん。
前提
API自体の知識は多少ある方。
RestfulAPIと言う名前を聞いたことがある方
概要
REST APIは「REST」と呼ばれるAPIの設計思想に基づいたweb用のapiのこと。
RESTには以下の4原則がある。
①ステートレス
②統一インターフェース
③接続性
④アドレス可能性
以上の四つの原則に従って実装されたAPIのことをRESTAPIと呼ぶ。
具体的に4原則について説明する
詳細
1. ステートレス
サーバーにユーザーセッションなどの「状態」(ステート)を持たない(レス)前提で情報のやり取りを行う。
→ やり取りが一回ごとに完結する。
→ 2度目のアクセスをしてもサーバー側は何も記憶がない
2. 統一インターフェース
例えば
①HTTPメソッドでサーバーにリクエストを送るよ
②JSON形式のデータを送るよ
などのようにブラウザとサーバのインターフェースの定義を統一する
3. 接続性
情報の内部に、別の情報の状態へのリンクを含めることができる。
4. アドレス可能性
全ての情報が唯一かぶる事のない識別子を持っていて、提供する情報をその識別子で表現可能
具体例で言うとメンバーの情報は一意のidやusernameを持っているため、 「/member/pk/」このようにして指定したメンバーに対して編集などの動作を行うことができる。
具体的には
一番大きなポイントとしては以下のように、同じuriでも異なるHTTPメソッドでリクエストを投げる事で異なる動作を行うことができると言う事。
このことによりシンプルでわかりやすいAPIが作成できると言うことだ。
HTTPメソッド | リソース | 概要 |
---|---|---|
GET | /member/ | メンバーの一覧を取得 |
GET | /member/pk/ | pkで指定したメンバーの情報を取得 |
POST | /member/ | 新規のメンバーを登録する |
PUT | /member/pk/ | pkで指定したメンバーの情報を更新する/pkにメンバーがなければ追加する |
DELETE | /member/pk/ | pkで指定したメンバーの情報を削除 |