会社の本棚にあったものを読むことにした。
普段の生活や業務の中で息をするようにHTTPに触れているが、HTTPのことちゃんと理解してないのでは?と思い読み始めた。
RESTやHTTPの成り立ちや基本的なところのおさらい、特にヘッダーまわりについてはちゃんと意識することが無かったので新しい発見があった。一方で、流石に内容の陳腐化も進んでしまっていた。ATOMまわりはぼんやりしか知らなかったのでそれはそれで面白かったが。
以下読書メモ。
REST Webのアーキテクチャスタイル
- アーキテクチャとアーキテクチャスタイルは異なる
- デザインとデザインパターンが異なるのと同様
- RESTはネットワークシステムのアーキテクチャスタイル
- クライアント/サーバーに特に有効
- まさにWeb
- クライアント/サーバーに特に有効
- リソースの名前 = URI
- リソース = Web上の情報
- RESTは、複数のアーキテクチャスタイルを組み合わせて成り立っている
- クライアント/サーバー
- ステートレスサーバー
- クッキーでのセッション管理はこれに反する
- キャッシュ
- 統一インターフェース
- ここでのインターフェースは、GETやPOSTを指している @
- 階層化システム
- コードオンデマンド: プログラムをクライアントにダウンロードして実行する
URI
HTTP
- TCP/IPとは
- インターネットのプロトコルは階層型プロトコル
- ネットワークインターフェース層
- ケーブルとか
- インターネット層
- ネットワークで実際にデータをやり取りする部分
- IPとは、インターネット層のプロトコルのこと
- IPでは、送り出したデータが相手に届くかまでは保証しない
- トランスポート層
- アプリケーション層
- メールやDNS、HTTPSを実現する層
- ソケットとは、TCPでプログラムを用いるときに使うライブラリ
- ネットワークでのやり取りを抽象化したAPI
- 接続、送信、受信、切断など。。。
- WebSocketとの関連はどうなんだろう
- websocketとは: https://qiita.com/south37/items/6f92d4268fe676347160
- リクエスト/レスポンス
HTTPメソッド
- POSTでPUT/DELETEを代用する
- _methodパラメータ
- formの中にtype=hiddenなinput要素を配置し、idを_methodとする
- valueに書いたメソッドが使える
- application/x-www-form-urlencodedの場合にのみ使える
- X-HTTP-Method-Override
- _methodパラメータ
- 条件付きリクエスト
- HTTPメソッドと更新日時などのヘッダを組み合わせて、メソッドの実行可否をキメられる
- If-Modified-Sinceヘッダなど
- 冪等性と安全性
- 冪等性: ある操作を何回行っても結果が同じこと
- 安全: 捜査対象のリソースの状態を変化させないこと
- 変化を与える: 副作用
ステータスコード
- 仕様で定められたステータスコードを正しく使いたい
- 分類
- 1xx: 処理中
- 2xx: 成功
- 3xx: リダイレクト
- 4xx: クライアントエラー
- 5xx: サーバーエラー
HTTPヘッダ
- メタデータ
- 認証やキャッシュなどHTTPの機能はヘッダで実現する
- ヘッダの機能
- 日時
- Date
- Expires
- MIMEメディアタイプ
- Content-Type
- charset(文字エンコーディング)
- 言語タグ
- Content-Langugage: ja-JP
- コンテントネゴシエーション
- Accept
- クライアントが処理できるメディアタイプをサーバーに伝える
- Accept-Charset
- Accept-Language
- Accept
- Contente-Length
- 認証
- Authorization
- キャッシュ
- Pragma
- キャッシュ禁止
- Expires
- Cache-Control
- 詳細なキャッシュ方法の指定
- 前述の指定はここでもできる
- max-ageとか
- 条件付きGET
- If-Modified-Since
- Pragma
- 日時
microformats
- classやrel属性でメタデータを表す
- wordpressでは採用されてる
- microformats は競合する他のメタデータのフォーマットと比較して、古くから存在し、Wordpress などでも採用されていることから、 検索エンジンも採用したのだと考えられます。(他に Yahoo が一部取り入れているようです。)ただし、Google は schema.org の提唱するメタデータを採用するように推奨しています。 schema.org は、Google, Yahoo, Bing(Microsoft) などが共同で管理する団体です。 また schema.org が提唱するメタデータの記述形式、microdata や RDFa フォーマットは、W3C で制定されるフォーマットです。検索エンジンを提供する各社が microformats のサポートを直ぐに止めることは考えられませんが、 今後は schema.org のメタデータを microdata フォーマットでマークアップ(記述)することがスタンダードになっていくと思われます。
- SEOに寄与するかも微妙、標準化競争に負けたように見える