Webを支ãˆã‚‹æŠ€è¡“
目次
概è¦
HTTPã€URIã€HTMLã€ãã—ã¦REST
実戦的ãªWebサービスã®è¨è¨ˆæŒ‡é‡
ãªãœWebã¯ã“ã‚“ãªã«ã‚‚æˆåŠŸã—ãŸã®ã‹
WEBã®ã‚¢ãƒ¼ã‚テクãƒãƒ£ã‚¹ã‚¿ã‚¤ãƒ«
新システムè¨è¨ˆæ™‚ã«ã¯ä¸‹è¨˜ã€RESTアーã‚テクãƒãƒ£ã‚¹ã‚¿ã‚¤ãƒ«ã‹ã‚‰å¿…è¦ãªæ©Ÿèƒ½ã‚’é¸æŠžã™ã‚‹ã€‚
機能 | 内容 | 利点 |
---|---|---|
クライアント/サーム|
クライアント:ユーザインタフェース サーãƒï¼šãƒ‡ãƒ¼ã‚¿ã‚¹ãƒˆãƒ¬ãƒ¼ã‚¸ ã«å½¹å‰²ã‚’分離ã™ã‚‹ |
マルãƒãƒ—ラットフォーム(PCã€æºå¸¯ã€ã‚²ãƒ¼ãƒ 機) サーãƒã®åŠ©é•·åŒ– |
ステートレスサーム| サーãƒå´ã§ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã®çŠ¶æ…‹ã‚’ç®¡ç†ã—ãªã„ | サーãƒã®å®Ÿè£…を簡略化ã§ãã‚‹ Cookieを用ã„ã‚‹ã¨è¤‡é›‘化ã™ã‚‹ |
ã‚ャッシュ | リソースをå†åˆ©ç”¨ã™ã‚‹ | 通信é‡ãƒ»å›žæ•°ä½Žæ¸› |
統一インタフェース | GETã€POSTç‰8ã¤ã®ãƒ¡ã‚½ãƒƒãƒ‰ã«å›ºå®š | シンプル 独立性å‘上 |
æ–層化システム| システムをæ–層化(分離)ã™ã‚‹ | ãƒãƒ¼ãƒ‰ãƒãƒ©ãƒ³ã‚µã€ãƒ—ãƒã‚ã‚·ç‰ã®åˆ¥ã‚·ã‚¹ãƒ†ãƒ ã‚’æ‹¡å¼µã§ãã‚‹ |
コードオンデマンド | スクリプトプãƒã‚°ãƒ©ãƒ をサーãƒã‹ã‚‰ãƒ€ã‚¦ãƒ³ãƒãƒ¼ãƒ‰ã—ã¦ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã§å®Ÿè¡Œã™ã‚‹ | クライアントå´ã®ã¿ã§ã®è¤‡é›‘ãªå‡¦ç†ãŒå¯èƒ½ |
URI
URIを変ã‚りã«ããã™ã‚‹ãŸã‚ã«ã¯
プãƒã‚°ãƒ©ãƒŸãƒ³ã‚°è¨€èªžã«ä¾å˜ã—ãŸæ‹¡å¼µåã€ãƒ‘スをå«ã‚ãªã„
https://office-yone.com/servlet/LoginServlet
メソッドåã€ã‚»ãƒƒã‚·ãƒ§ãƒ³IDã‚’å«ã‚ãªã„
https://office-yone.com/login.do?action=show
https://office-yone.com/login.jsp?jsessionid=99999
リソースをå詞ã«
URIã®ãƒ¦ãƒ¼ã‚¶ãƒ“リティ
URIをシンプルã«çŸãã™ã‚‹äº‹ã§ã€
・タイプミスã®è»½æ¸›
・メディアã§ã®éœ²å‡ºã®ã—易ã•
・経費削減
ç‰ãŒè¦‹è¾¼ã‚ã‚‹
ä¸é€æ˜Žæ€§
↓ 想åƒ
本æ¥ã‚¢ã‚¯ã‚»ã‚¹ã•れãŸããªã„リソースã«ã‚¢ã‚¯ã‚»ã‚¹ã•れるæã‚ŒãŒé«˜ã¾ã‚‹
HTTP
TCP/IP
HTTPã¯TCP/IPãŒå‹•作ã™ã‚‹äº‹ã‚’剿ã«å‹•作ã™ã‚‹
層 | プãƒãƒˆã‚³ãƒ« | 処ç†å†…容 |
---|---|---|
アプリケーション層 | HTTPã€SSHã€SMTPã€DNS | 接続~é€å—ä¿¡ï½žåˆ‡æ– |
セッション層 | ||
トランスãƒãƒ¼ãƒˆå±¤ | UDPã€TCP | IPã‹ã‚‰é€ä¿¡ã•れãŸãƒ‘ケットã®åˆ°é”å‡¦ç† |
ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯å±¤ | IP | パケットを宛先ã¸é€ä¿¡ |
物ç†å±¤/データリンク層 | イーサãƒãƒƒãƒˆ | 電気信å·ã‚’ä¼é” |
åŒæœŸåž‹
HTTPã¯ä»¥ä¸‹ã®æ–¹å¼ã‚’採用ã—ã¦ãŠã‚Šã€ãƒ¬ã‚¹ãƒãƒ³ã‚¹ã‚’å–å¾—ã™ã‚‹ã¾ã§ã¯å¾…機ã—ç¶šã‘る。
クライアント/ã‚µãƒ¼ãƒæ–¹å¼
リクエスト~レスãƒãƒ³ã‚¹
リクエスト/レスãƒãƒ³ã‚¹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
HTTPリクエストメッセージ
「HTTPプãƒãƒˆã‚³ãƒ«/HTTPリクエストã€å‚ç…§
HTTPレスãƒãƒ³ã‚¹ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸
「HTTPプãƒãƒˆã‚³ãƒ«/HTTPレスãƒãƒ³ã‚¹ã€å‚ç…§
ステートレス
ステートフル | ステートレス | 備考 | |
---|---|---|---|
クライアントã®çŠ¶æ…‹ アプリケーション状態 |
記憶ã™ã‚‹ | 記憶ã—ãªã„ | |
é€šä¿¡é‡ | å°‘ 差分ã®ã¿ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ |
多 常ã«çŠ¶æ…‹ã‚’ãƒªã‚¯ã‚¨ã‚¹ãƒˆã™ã‚‹ |
|
è² è· | 高 | 低 | èªè¨¼æ™‚ç‰ |
スケールアウト | × | ○ | |
実装 | 複雑 | å˜ç´” |
メソッド
メソッド | 処ç†å†…容 | ã¹ãç‰ | 安全性 |
---|---|---|---|
GET | リソースã®å–å¾— | â—‹ | â—‹ |
POST | リソースã®ä½œæˆã€è¿½åŠ ã€ä»– | × | × |
PUT | ãƒªã‚½ãƒ¼ã‚¹ã®æ›´æ–°ã€ä½œæˆ | â—‹ | × |
DELETE | リソースã®å‰Šé™¤ | â—‹ | × |
HEAD | リソースã®ãƒ˜ãƒƒãƒ€(メタデータ)å–å¾— | â—‹ | â—‹ |
OPTIONS | リソースãŒã‚µãƒãƒ¼ãƒˆã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã®å–å¾— | â—‹ | â—‹ |
TRACE | 試験用 | ||
CONNECT | プãƒã‚シ接続è¨å®š |
ã¹ãç‰
常ã«å–å¾—ã§ãã‚‹çµæžœãŒåŒä¸€ã§ã‚る事
PUTã€DELETEを複数回実行ã—ãŸå ´åˆã€1å›žç›®ã§æ›´æ–°å¯¾è±¡ãŒå¤‰åŒ–ã—ã¦2å›žç›®ã§æ›´æ–°ãŒå¤±æ•—ã—ãŸã¨ã—ã¦ã‚‚ã€æ›´æ–°ã—ãŸã¨ã„ã†çµæžœãŒå¾—られる
安全性
リソースãŒå¤‰åŒ–ã—ãªã„事
ステータスコード
「HTTPプãƒãƒˆã‚³ãƒ«/HTTPリクエストã€å‚ç…§
HTTPヘッダ
ãƒ¡ã‚¿æƒ…å ±ã‚’è¨˜è¿°ã™ã‚‹éƒ¨åˆ†(≠body)
ãƒ˜ãƒƒãƒ€æƒ…å ±ã‹ã‚‰ãƒ—ãƒã‚°ãƒ©ãƒ ã®æŒ™å‹•を決定ã™ã‚‹
(主ã«ã‚µãƒ¼ãƒ)
メディアタイプ
bodyã®å†…容ã®ç¨®é¡žã‚’示ã™
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
ãƒ•ã‚¡ã‚¤ãƒ«å½¢å¼ | ä¸€èˆ¬çš„ãªæ‹¡å¼µå | MIMEタイプ | デフォルト文å—コード charset未指定時 |
---|---|---|---|
テã‚スト | .txt | text/plain | ISO 8859-1 ※英数å—ã€è¨˜å·ã‹ã‚‰æˆã‚‹ (日本語無ã—) |
テã‚スト | .csv | text/csv | |
HTML文書 | .htm .html | text/html | |
スタイルシート | .css | text/css | |
JavaScript | .js | text/javascript | |
VBScript | .vbs | text/vbscript | |
CSS | .css | text/css | |
XML文書 | .xml | text/xml(éžæŽ¨å¥¨) | |
GIFç”»åƒ | .gif | image/gif | ç„¡ã— |
JPEGç”»åƒ | .jpg .jpeg | image/jpeg | |
PNGç”»åƒ | .png | image/png | |
JSON文書 | .json | application/json | |
CGIスクリプト | .cgi | application/x-httpd-cgi | |
Word文書 | .doc | application/msword | |
PDF文書 | application/pdf | ||
JavaScript | .js | application/javascript | |
XML文書 | .xml | application/xml |
ç„¡ã— XML宣言部ã§ã®å®šç¾©æŽ¨å¥¨ <?xml version="1.0" encoding="utf-8" ?> |
XHTML文書 | .xml | application/xhtml+xml |
エンコーディング
charset=utf-8
charset=sjis