SoLA2-TechBlog

退屈な作業はプログラムに任せましょう!日々の作業に少し工夫を足すだけであなたの時間はもっとクリエイティブになる。

専門用語少なめ!HTTP入門-リクエストとレスポンス【基礎知識シリーズ】

f:id:gootor3030:20180823150448j:plain

概要

皆さんこんにちは、SoLA2です。

基礎知識シリーズ第2回目です。今回は、HTTPリクエストやHTTPレスポンスについて解説します。ふとした時にヘッダ情報を扱わなければならなくなり、苦戦するエンジニアも多いはず!そこで今回はそんなとき困らないように、実践で必要となる部分に的を絞って解説していきたいと思います。

HTTPリクエストとHTTPレスポンス

前回の記事でお伝えしたとおり、「ブラウザ(クライアント)」が「サーバ」に対して接続を要求するときに出すものをリクエスト、正確にはHTTPリクエストといいます。また、そのHTTPリクエストに対して「サーバ」が返すものをHTTPレスポンスと呼びます。

HTTPリクエストやHTTPレスポンスは、ぱっと見文字の羅列なのでとっつきにくいと思います。なので3つの領域に分けてしまいましょう。

HTTPリクエストのフォーマット

HTTPリクエストを3つの領域に分けると下記の3領域になります。

  • リクエスト・ライン(最初の1行)
  • メッセージ・ヘッダ(最初の1行を除く空白行より前の部分)
  • メッセージ・ボディ(空白行より後の部分)

最初の1行に記述されている部分は、リクエスト・ラインと呼ばれ、ここを見れば大まかに、どういったリクエストなのかを判断することができます。HTTPリクエストのリクエスト・ラインを更に細かく分けると、「メソッド」「URI」「HTTPバージョン」の3要素に分けることができます。

メソッドの種類

「メソッド」は「サーバにどのような動作をして欲しいのか」を伝えるための要素です。例えば、典型的なパターンとして「フォームに入力したデータを指定したURIのプログラムに渡す」といった動作がそれに該当します。

メソッドにはいくつか種類が存在しますが、数が多いので全ての種類を覚えるのではなく、代表的な4つを覚えておきましょう。この4つはRESTと呼ばれる設計思想を満たすアプリケーションを開発する際に必要となるものです。

  • GET:URIで指定した要素を取得します。
  • POST:URIで指定した場所に登録します。
  • PUT:URIで指定した要素を更新します。
  • DELETE:URIで指定した要素を削除します。

余談ですが筆者も、AWSの「Lmbda」と「API Gateway」を使ってサーバレスのアプリケーションを開発しようとした時、GETとPOSTしか知らなくて戸惑った記憶があります。サーバレスを選択肢のひとつにできると、お客様の要件と合致した場合は、コストを抑えることができるため提案の幅が広がります。

URIとURL

「URI」でなんぞ?「URL」に似てるなって思った方、鋭いですね。実際に「URL」は「URI」のことでもあります。正確には「URI」は「URL」よりも広義の意味で使われますが、現状は「URL」=「URI」と認識しておいて問題ありません。詳しくは次回の記事で解説します。

HTTPレスポンスのフォーマット

HTTPレスポンスを3つの領域に分けると下記の3領域になります。

  • ステータス・ライン(最初の1行)
  • メッセージ・ヘッダ(最初の1行を除く空白行より前の部分)
  • メッセージ・ボディ(空白行より後の部分)

最初の1行に記述されている部分は、ステータス・ラインと呼ばれています。HTTPレスポンスのステータス・ラインを更に細かく分けると、「HTTPバージョン」「ステータス・コード」「レスポンス・フレーズ」の3要素に分けることができます。

「ステータス・コード」と「レスポンス・フレーズ」

名前だけだとピンとこない人も、次の文言には見覚えがあるのではないでしょうか?

「404 Not Found」

指定したURLでページが見つからなかったときに、よく表示されるあれですね。実はこの文言こそが、「ステータス・コード」と「レスポンス・フレーズ」なのです。細かい話をすると、404が「ステータス・コード」で、Not Foundが「レスポンス・フレーズ」です。

システムの保守を担当しているエンジニアであれば、障害対応でお馴染みの「ステータス・コード」ですが、種類が非常に多いので、すべて覚える必要はありません。ですが、百の位がステータスの大まかな意味を表していることくらいは理解しておきましょう。

  • 100番代:単なる情報を返しています
  • 200番代:成功した旨を返しています
  • 300番代:さらなる処理を要求しています
  • 400番代:リクエストに誤りがあった旨を返しています
  • 500番代:リクエストの処理に失敗した旨を返しています

まとめ

いかがだったでしょうか。今回はHTTPリクエストとHTTPレスポンスについて学びました。これらの知識はネットワークエンジニアのみならず、デバックや障害対応をするエンジニアであれば知っていて損はない領域でしょう。

いざ必要になってから調べ始めると存外時間がかかるものです。真のエンジニアとして活躍したいのであれば、日頃からこういった知識に触れて、最低限の基礎知識は習得しておいたほうが良いと思います。

次回は、今回もちらっと登場したURIについてもう少し踏みこんだ内容を解説していきたいと思います。
ではまた。