メタプログラミングRubyとは? 出版社である O'Reilly Japanのサイトからの引用です。 本書はRuby...
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==
スポンサーリンク