REST API — 同じURLでもメソッドで意味が変わる
REST APIでは、「何を」操作するかをURL(リソース)で、「どうする」かをHTTPメソッドで表します。面白いのは、同じURLでも、メソッドを変えるだけで意味がガラッと変わること。/todos という1つの住所に対して、GETなら「見せて」、POSTなら「作って」、PUTなら「置き換えて」、DELETEなら「消して」になります。
この4つは、データ操作の基本CRUD(Create/Read/Update/Delete)にきれいに対応します。下の図1で、メソッドを選んで送信し、サーバーの状態がどう変わるかを確かめてください。
/todos でも、メソッドで「読む・作る・置換・消す」が決まるメソッドが「動詞」、URLが「目的語」
RESTの考え方はシンプルです。URLは名詞(操作したいモノ)、メソッドは動詞(やること)。だから /todos は「ToDoの集まり」、/todos/2 は「ID=2のToDo」を指し、それに GET / POST / PUT / DELETE という動詞を組み合わせます。URLに /createTodo や /deleteTodo のような動詞を入れないのがコツ――動詞はメソッドが担当するからです。
図1で試すと分かるように、GETは状態を変えません(何度実行しても同じ=安全)。一方 PUTとDELETEは「何度やっても結果が同じ」という性質(冪等)を持ちます。たとえば DELETE /todos/2 は、1回目で消え、2回目以降は「もう無い(404)」で状態はそれ以上変わりません。これに対して POSTは呼ぶたびに新しい行が増えます。この違いは、通信が失敗してリトライしてよいかを判断する根拠になります。
- リソース
- 操作対象を表すURL。
/todos(集合) や/todos/2(個別) のように指す。 - CRUD
- Create / Read / Update / Delete。POST / GET / PUT / DELETE におおむね対応する。
- ステータスコード
- 結果の種類。200 OK / 201 Created / 204 No Content / 404 Not Found など。
- 冪等(べきとう)
- 同じ操作を何度繰り返しても結果が変わらない性質。GET・PUT・DELETEが持つ。
まとめ
REST APIは、「URL(名詞)+メソッド(動詞)」でデータ操作を表す決まりごとです。同じ /todos でも、GETは読み、POSTは作り、PUTは置き換え、DELETEは消す――これがCRUDの正体。さらにGETは安全・PUT/DELETEは冪等という性質を押さえると、キャッシュやリトライの設計まで見通せます。図1でメソッドを切り替えながら、サーバーの状態とレスポンスの動きを体に入れてください。