RESTful API と HTTP Method について

HTTP メソッドには GET や POST といった種類があります。

ポピュラーなメソッドはこの2つですが
実際はもっと多くのメソッドがあるのはご存知でしょうか?

HTTP/1.1 には OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT といったメソッドが定義されているのです。

参考
W3C Http Transfer Protocol -- HTTP/1.1

HTML の form で使用可能なメソッドが GET と POST のみのため
これまではこの2種類しか目立って使用されてきませんでした。

しかも、用途としては
パラメーターが見られていもいい場合には GET を使う
パラメーターが見られたくない場合には POST を使う
といった切り分けくらいになっているかと思います。

そうなった結果
業務システムにおける HTTP メソッドは
「とにかくPOSTのみ」といった感じになってしまいました。

こういった歴史から
HTTP メソッドの本来の目的は長い期間失われてしまっていたのですが
RESTful API の考えが、HTTPメソッドの本来の役割を使うようにしたものであったため、 RESTful API の普及とともに、HTTP メソッドの使い方が見直されてきています。

具体的には、RESTful API では
CRUD 処理に、主に以下の HTTP メソッドを割り当てます。

  • C => POST
  • R => GET
  • U => PUT
  • D => DELETE

例を示しますと
処理を行うURLとメソッドが以下のように変更になります。

【従来のAPI】

[POST]
/api/customers/create
[POST]
/api/customers/read
[POST]
/api/customers/update
[POST]
/api/customers/delete

【RESTful API】

[POST]
/api/customers
[GET]
/api/customers
[PUT]
/api/customers
[DELETE]
/api/customers

同じ /api/customers という URL で
取得・挿入・更新・削除の処理を行うことができるのです。

みなさんこれをどう思いますか?

私は素晴らしいことだと思います。

プログラムというのは
設定より規約に則って作っていくことが
品質を上げる上で非常に重要なことだと
理論上且つ経験上、私は考えています。

最後にまとめを行いますと
「HTTP メソッドは本来のあるべき使い方をしていきましょう」
ということです。

 |