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文書 .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

Follow me!