Railsにおけるルーティングについて調べていると、HTTPメソッドについて知る必要があると感じたのでまとめてみました。
HTTPメソッドとは
HTTPリクエスト内に含まれるもので、8つが目的別で定義されています。これらのうちWebサイトを閲覧する際に主に使用されるHTTPメソッドは「GET」と「POST」の2つです。
HTTPメソッド名 | 説明 |
---|---|
HEAD | HTTPヘッダーの情報のみを取得するメソッド。データの更新日時やサイズのみを取得する場合に使用。 |
GET | HTMLファイルや画像といったデータを取得する場合に使用。 |
POST | フォームに入力した文字などのデータを転送する場合に使用。 |
PUT | データをアップロードや更新する場合に使用。 |
DELETE | 指定のデータを削除する場合に使用。 |
CONNECT | Webサーバに接続するまでに別のサーバーを中継する場合に使用する。 |
OPTIONS | 利用できるHTTPメソッドを問い合わせる場合に使用。利用制限されているメソッドの確認に。 |
TRACE | WebブラウザとWebサーバーの経路の確認に使用。 |
さまざまなメソッドがありますが、覚えておくべきは「GET」、「POST」、「PUT」、「DELETE」の4つでしょう。
また、「PUT」、「DELETE」、「CONNECT」や「TRACE」は、その性質から悪用される可能性があるため、Webサーバーが使用制限をかけている場合が多いといいます。
「GET」と「POST」の違い
表には書きませんでしたが「GET」もデータを送信することができ、「POST」と同じように使用することができますが、送信方法の違いがあります。
「GET」で送信する場合、URLの後ろに送りたいデータを付与して送ります。一方、「POST」はHTTPリクエスト内のメッセージボディ内にデータを付与して送ります。
このため前者を利用した場合、送付データがWebブラウザの閲覧履歴(URLとして)に残ってしまいIDやパスワードが知られてしまいます。そのため、個人情報などをWebサーバーに送る場合には、機密性を考慮して「POST」が利用されます。
「POST」と「PUT」の違い
「PUT」はURLで指定したデータがある場合は更新し、ない場合は「POST」のように新しく作り出します。
2つのメソッドの違いはURLの指定にあります。「POST」の場合はURLの決定権はクライアントではなくサーバー側にあります。
一方、「PUT」の場合はクライアントにURLの決定権があります。一般的に、クライアントがURLを決定できるということは色々と技術的な問題があるようなので、特別な事情がない限り「POST」を利用する方が好ましいといえます。
おわりに
8種のメソッドのうち、よく使うメソッドはたった4種類だけですので、しっかり頭に入れておきたいです!