LoginSignup
1
1

More than 5 years have passed since last update.

webを支える技術

Last updated at Posted at 2018-12-07

webとは何か

HTTP、URI、HTMLの関係

スクリーンショット 2018-10-08 18.22.33.png

REST

  • クライアント/サーバー:クライアントとサーバーで処理を分離する
  • ステートレスサーバー:サーバーがアプリケーション状態を管理しない
  • キャッシュ:一度取得したリソースをクライアント側で使い回すことでサーバーとクライアントの通信回数を減らす
  • 統一インターフェース:インターフェースを統一する(HTTPのメソッドは8つのみ)
  • 階層化システム:システムを階層化することで負荷を分散させたり、アクセスを制限できる
  • コードオンデマンド:JavaScriptなどをサーバーからダウンロードすることでクライアントの機能を拡張できる

URI

クールURIとは「変わらないURI」であり「シンプルなURI」

  • プログラミング言語に依存した拡張子やパスを含めない
  • メソッド名やセッションIDを含めない
  • URIはリソースを表現する名詞にする

HTTP

HTTPはTCP/IPをベースとしたプロトコル。
スクリーンショット 2018-10-08 19.27.49.png

  • ネットワークインタフェース層:物理的なケーブルやネットワークアダプタ
  • インターネット層:指定したIPアドレスを送り先としてパケット単位でデータを送り出す
  • トランスポート層:データの送り先に対してコネクションをはることでデータの抜け漏れをチェックする。転送するデータがどのアプリケーションに渡るかを決定するのがポート番号。サーバ側のHTTPはデフォルトで80番。
  • アプリケーション層:メールやDNS、HTTPなどのインターネットアプリケーションを実現する層。

例:技術評論社のWebサイトであるgihyo.jpにアクセスした場合
クライアントは、まずDNSを使ってgihyo.jpのホスト名を名前解決し、その結果得られるIPアドレスのTCP80番ポートに接続して、リクエストを送信する。

クライアントで行われること
1. リクエストメッセージの構築
2. リクエストメッセージの送信
3. (レスポンスが返るまで待機)
4. レスポンスメッセージの受信
5. レスポンスメッセージの解析
6. クライアントの目的を達成するために必要な処理

画像やスタイルシートへのリンクが含まれるため何度もリクエストを発行しなければ正しくHTMLをレンダリングできない。

サーバーで行われること
1. (リクエストの待機)
2. リクエストメッセージの受信
3. リクエストメッセージの解析
4. 適切なアプリケーションプログラムへの処理の委譲
4. アプリケーションプログラムから結果を取得
5. レスポンスメッセージの構築
6. レスポンスメッセージの送信

HTTPのステートレス性

ステートレスとは「サーバーがクライアントのアプリケーション状態を保存しない」

HTTPメソッド

メソッド      意味               
GET リソースの取得
POST 子リソースの作成、リソースへのデータの追加、そのほかの処理         
PUT リソースの更新、リソースの作成
DELETE リソースの削除
HEAD リソースのヘッダ(メタデータ)の取得
OPTIONS リソースがサポートしているメソッドの取得
TRACE プロキシ動作の確認
CONNECT プロキシ動作のトンネル接続への変更

POSTとPUTの使い分け

POST : URIの決定権はサーバー(TwitterのようにつぶやきのURIをサーバー側が自動的に決定する場合)
PUT : URIの決定権はクライアント(wikiなどのようにクライアントが決めたタイトルがそのままURIになるような場合)

HTMLのフォームで指定できるメソッドはGETとPOSTの2つだけのためPOSTでPUTとDELETEを代用する方法がある。
1. _methodパラメータ
input type="hidden" id="_method" value="PUT"
2. X-HTTP-Method-Override
X-HTTP-Method-Override: PUTという記述をヘッダに含める

べき等性と安全性

  • べき等性 : ある操作を何度行っても結果が同じこと
  • 安全 : 操作対象のリソースの状態を変化させないこと
メソッド 性質
GET、HEAD べき等かつ安全
PUT、DELETE べき等だが安全でない
POST べき等でも安全でもない
  • GETのリクエストを何度行ったとしても結果もリソースの状態も変わらない。
  • PUTとDELETEは何度送信しても結果が変わらない。例えばDELETEはリソースを削除すれば再びリクエストを送信すると404 NOT Foundが返ってくる。しかし、「リソースが削除されている」という結果は先ほどと同じ。
  • POSTは複数回リクエストするとその分だけリソースの状態が変わる。そのため二重注文のような問題が起こる可能性がある。

ステータスコード

ステータスコードの分類と意味

  • 1xx : 処理中
  • 2xx : 成功
  • 3xx : リダイレクト
  • 4xx : クライアントエラー
  • 5xx : サーバーエラー

HTTPヘッダ

  • OpenID : あるwebサービスのアカウントで別のwebサービスにログインできるようにする
  • OAuth : Webサービス間でデータをやりとりできるようにする仕様

持続的接続

パイプライン化 : TCPコネクションを持続的に接続することでクライアントはレスポンスを待たずに同じサーバにリクエストを送信できる。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1