HTTP入門
こんにちは、ぬまやんです。最近Goプログラミング実践入門を購入しました。この本を元にWebアプリやHTTPについて勉強した内容をまとめてみます。多数見当違いな記述もあると思いますが、ご指摘お願いいたします。
1. HTTPの定義
- クライアント(ユーザー側)とサーバー(サービス提供側)をリクエスト/レスポンスの1回のやりとりで完結させる通信
例: twiiter
ユーザーがツイート検索することでリクエストがサーバーに送信され、サーバーがレスポンスを返して、検索結果をブラウザに表示
- HTTP1.Xではリクエスト/レスポンスはテキストベースにて行われていたが、HTTP2.0になるとバイナリ
1.1 HTTPリクエスト
GET /example.com/hatena.html HTTP/1.3 User-Agent: Mozilla/5.0 (メッセージ本体)
リクエストメソッド
- リクエストメソッドはWebアプリに対して、処理してほしい要求内容を表す
- 主要なメソッドと要求内容を記載する
- GET: 指定するリソースの返却
- POST: メッセージ本体のデータをリソースに送信(送信後の処理内容はサーバーが決定)
- PUT: メッセージ本体のデータをリソースに置き換え
- DELETE: リソースの削除
- POSTとPUTは2回同様のメソッドを送信した時にサーバの状態が変更されるか否かが異なる
- POSTは2回サーバに送信した時にサーバ状態が変更される場合がある
- PUTは2回サーバに送信した時、2回目はサーバの状態を変更しない
リクエストヘッダ
- リクエストに付随する情報が表示される
- 主要なヘッダを記載する
- Content-Length: メッセージ本体のバイト数
- Host: サーバ名とポート番号
- User-Agent: クライアント情報
1.2 HTTPレスポンス
200 OK Date: 05 Nov 2017 10:02:59 GMT Content-Length: 712300 <!DOCTYPE html> (リクエストHTML)
- ステータス
- レスポンスへッダ (0行以上)
- 空行
- HTML
レスポンスステータス
- レスポンスはステータスによって結果を要約している
- 以下に主要レスポンスを記す
レスポンスヘッダ
2. Webアプリケーション
WebアプリケーションはHTTPを用いて以下の動作を行うシステム
これらの処理を行うために、Webアプリケーション内にはハンドラとテンプレートエンジンの二つの構成がある
2.1 ハンドラ
- クライアントからのリクエストを受信し、処理を行うもの
- 一般的にハンドラをHTTPメッセージ処理を行うコントローラとアプリケーション処理を行うモデルに分割する
2.2 テンプレートエンジン
- クライアントに返却するHTMLを作成するもの
- 静的テンプレートとアクティブテンプレートに分かれる
感想
- HTTPの仕組みのシンプルさが直感的でとてもわかりやすかったです
- 常に広く普及する仕組みにわかりやすさは欠かせないものであると実感しました