Webを支える技術:7~9章:HTTPメソッド、ステータスコード、HTTPヘッダ

Webを支える技術とは?

技術評者社から出されている技術書で、以下は公式サイトからの概要引用です。

Webは誕生から20年で爆発的な普及を果たし,17億人のユーザと2億台のサーバを抱える巨大システムへと成長しました。Webがここまで成功した秘密は,その設計思想,いわゆるアーキテクチャにあります。Webのアーキテクチャ,そしてHTTP,URI,HTMLといったWebを支える技術は,Webがどんなに巨大化しても対応できるように設計されていたのです。

私たちが作る個々のWebサービスも,Webのアーキテクチャにのっとることで成功へとつながります。Webのアーキテクチャに正しく適応したWebサービスは,情報が整理され,ユーザの使い勝手が向上し,ほかのサービスと連携しやすくなり,将来的な拡張性が確保されるからです。

本書のテーマは,Webサービスの実践的な設計です。まずHTTPやURI,HTMLなどの仕様を歴史や設計思想を織り交ぜて解説します。そしてWebサービスにおける設計課題,たとえば望ましいURI,HTTPメソッドの使い分け,クライアントとサーバの役割分担,設計プロセスなどについて,現時点のベストプラクティスを紹介します。

引用:http://gihyo.jp/magazine/wdpress/plus/978-4-7741-4204-3/

Webを支える技術 HTTP、URI、HTML、そしてREST (WEB+DB press plusシリーズ) [ 山本陽平 ]

7~9章:HTTPメソッド、ステータスコード、HTTPヘッダをまとめてみました。

7章:HTTPメソッド

8つしかないメソッド

  • GET:リソースの取得
  • POST:子リソースの作成、リソースへのデータ追加
  • PUT:リソースの更新、リソースの作成
  • DELETE:リソースの削除
  • HEAD:リソースのヘッダの取得
  • OPTIONS:リソースのサポートしているメソッドの取得
  • TRACE:自分宛てにリクエストメッセージを返す試験
  • CONNECT:プロキシ動作のトンネル接続への変更

HTTPメソッドとCRUD

  • Create:POST/PUT
  • Read:GET
  • Update:PUT
  • Delete:DELETE

冪等性と安全性

  • 冪等:ある操作を何回行っても結果が同じこと
  • 安全性:操作対象のリソース状態を変化させないこと
  • GET、HEAD:冪等かつ安全
  • PUT、DELETE:冪等だが安全ではない
  • POST:冪等でも安全でもない

8章:ステータスコード

レスポンスメッセージのステータスラインに含まれる

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

  • 1xx:処理中
  • 2xx:成功
  • 3xx:リダイレクト
  • 4xx:クライアントエラー、原因はリクエストにある
  • 5xx:サーバエラー、原因はサーバにある

よく使われるステータスコード

  • 200 OK
    • リクエスト成功
  • 201 Created
    • リソースの作成成功
    • PUTやPOSTのレスポンスとして返る
  • 301 Moved Permanently
    • リソースの恒久的な移動
    • リクエストで指定したリソースが新しいURIに移動したことを示す
  • 303 See Other
    • リクエスト成功
    • リクエストに対する処理結果が別のURIで取得できること
  • 400 Bad Request
    • リクエストの間違い
    • リクエストの構文やパラメータが間違っていたことを示す
  • 401 Unauthorized
    • アクセス権不正
  • 404 Not Found
    • リソースの不在
  • 500 Internal Server Error
    • サーバ内部エラー
  • 503 Service Unavailable
    • サービス停止
    • サーバメンテナンスなどで一時的にアクセスできないことを示す

9章:HTTPヘッダ

  • メッセージのボディの対する付加的な情報、いわゆるメタデータを表現する
  • クライアントやサーバはヘッダを見てメッセージに対する挙動を決定する
  • 日時やMIMEメディアタイプ、認証の方法やキャッシュの可否を指定することができる

Basic認証

  • ユーザ名とパスワードによる認証方式
  • ユーザ名とパスワードえおBase64エンコードしてAuthorizationヘッダでリクエストごとに送信
  • Base64エンコードは簡単にデコードできるため平文でネットワーク上を流れるのに等しい
  • そのため、HTTPS通信などの検討が必要となる
DELETE /test HTTP/1.1
Host: example.jp
Authorization: Basic dXNlcjpwYXNzd29yZA==
この記事の内容が役に立ったと思いましたら、SNSで記事を共有していただけますと幸いです。