Webの仕組み超入門
Webとは
Webを閲覧するときに何が起こっているか
ユーザがURLを入力
ブラウザがサーバにリクエストを投げる
なんやらかんやら
サーバがブラウザにレスポンスを返す
ファイルをやり取りしているだけ
https://scrapbox.io/files/60dc3ce6ed4ff900227876b5.png
Webとは,インターネットを使ったハイパーメディア
バイパーテキスト:複数の文書を相互に結びつけ参照できるようにしたもの
URI概要
URI(Uniform Resource Identifier)とは
統一:みんなで同じルールを使おうね
資源:ブログ,画像,動画,音楽とか
識別子:例えば`http://hoge.com/picture.jpeg で画像を識別できる
$ \mathrm{URL} \subset ( \mathrm{URL} \cap \mathrm{URN} )
URL と URN は排他的 (URLとの比較 - Uniform Resource Name - Wikipedia )
URL(Uniform Resource Locator)
統一
資源
場所
URN(Uniform Resource Name)
統一
資源
名前
URNは資源の名前で,URLは資源のある場所
URNが流行らなかった理由
URNは名前によって永続的な特定を可能にする
URLで十分永続的なのでURLが主流に
仕様
使える文字
アルファベット,数字,一部の文字
これらの文字のみで構成された文字列を URL Safe というよ
日本語が使えてるのはエスケープされてるだけ!
URL の仕組み
code:text
┌────────────────────────────────────────────────────────────────────────────────────────────────┐
│ href │
├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
│ protocol │ │ auth │ host │ path │ hash │
│ │ │ ├─────────────────┬──────┼──────────┬────────────────┤ │
│ │ │ │ hostname │ port │ pathname │ search │ │
│ │ │ │ │ │ ├─┬──────────────┤ │
│ │ │ │ │ │ │ │ query │ │
" https: // user : pass @ sub.example.com : 8080 /p/a/t/h ? query=string #hash "
│ │ │ │ │ hostname │ port │ │ │ │
│ │ │ │ ├─────────────────┴──────┤ │ │ │
│ protocol │ │ username │ password │ host │ │ │ │
├──────────┴──┼──────────┴──────────┼────────────────────────┤ │ │ │
│ origin │ │ origin │ pathname │ search │ hash │
├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
│ href │
└────────────────────────────────────────────────────────────────────────────────────────────────┘
(All spaces in the "" line should be ignored. They are purely for formatting.)
出典: URL | Node.js v16.4.0 Documentation
URLを重要視しよう
設計に依存させない
プログラミング言語の拡張子を利用しない
実装に依存したパス名(cgi-bin)を利用しない
セッションIDを含めない
http://hoge.com/fuga&session=999999
ブックマークされる可能性もある
リソースを表現する名詞にする
http://hoge.com/e9302-r3uw0f なんてわからん!
http://hoge.com/blog/2019/01/01 なら意味がわかる
HTTP概要
会話するための規約
Hyper TextをTransferするためのProtocol
code:http request
GET / HTTP/1.1
Host: www.rcc.ritsumei.ac.jp
User-Agent: curl/7.68.0
Accept: */*
code:http response
HTTP/1.1 200 OK
Date: Tue, 29 Jun 2021 14:25:12 GMT
Server: nginx
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.0.33
Link: <http://www.rcc.ritsumei.ac.jp/wp-json/>; rel="https://api.w.org/"
Set-Cookie: DMZ=1405659328.20480.0000; path=/; Httponly
HTTPメソッド
GET:取得
POST:
PUT
DELETE
など
HTTPステータスコード
1xx情報
2xx成功
200 :OK
201 :Created
3xx : リダイレクション
301
Moved Permanently
恒久的に移動したで
302
Found
サーバダウンしてるから一時的に移動してるで
4xx : クライアントエラー
400
Bad Request
送信データがおかしいで
401
unauthorized
認証されてへんで
403
Forbidden
許可されてへんで
ホワイトリストにない
404
Not Found
リクエストされたリソースあらへんで
5xx : サーバエラー
500
Internal Server Error
なんかようわからんけどサーバエラーでてるわ
503
Service Unavailable
サーバメンテ中やで
HTML概要
文書構造をコンピュータに理解させる
<タグ> で意味付け
<harmony/> という小説では感情をタグで構造化する ETML という架空の言語が出てくる ygkn.icon