tags: 程式導師實驗計畫第四期
[NET101]
Week4
為什麼需要協定(Protocol):
建立彼此能夠溝通的規範,排除各種狀況,讓溝通更順利。
HTTP:
HTTP 是什麼?
HyperText Transfer Protocol(超文本傳輸協定),網頁前後端溝通需透過 HTTP 或 HTTPS(S=Scures) 和 Sever 溝通。
HTTP request
如何看到一個網頁的內容?
- 瀏覽器傳送 HTTP request(有一定格式GET/Header/body...) 到 sever
- sever 處理後,回傳一個 response
DNS(Domain Name System)
負責處理 Domain name 和實際 IP 位置的轉換。
Note:查看 Domain name的 IP 位置:CLI nslookup
+ url
Header / Body
Header: 額外附加資訊
Body: 放主要內容
Header
HTTP Method
HTTP Method | 說明 |
---|---|
GET | 請求展示指定資源,只應用於取得資料 |
POST | 提交指定資源 |
PUT | 取代原本整個內容 |
PATCH | 指定內容的修改,不會覆蓋掉原先資源 |
OPTIONS | 回傳 sever 支援哪些方法 |
HTTP Status Code
2xx:成功回應
3xx:重定向訊息
4xx:用戶端錯誤
5xx:伺服器錯誤
Status Code | 說明 |
---|---|
200 | 請求成功 |
301 | 永久被移動到新位置 |
302 | 暫時的移動到新位置 |
404 | 伺服器找不到請求的資源 |
500 | 內部伺服器錯誤 |
實作一個 HTTP Sever
- 載入 Node.js module
- 建立sever
- http.createServer(),另寫一個 function 包含Node.js 提供的 request 及 respones 二個參數。
- request: 用來得到 http sever 發過來的請求(url/http header/data)
response: 物件送出回應給 http 送來的請求
EX:
(1).req.url === '/'
=>res.write('welcome')
(2).
/redirect
=>res.writeHead(200, {'Hi': 'Hi Kayla'})
.writeHead(statusCode, [reasonPhrase], [headers])
Note:res.writeHead
會出現在 http 的 headers 中。
(3)同上設定,導到設定的 url 後,會轉到 google.com
res.writeHead(302, {'Location': 'https://google.com'})
var http = require('http') var sever = http.createServer(handleRequest) function handleRequest(req, res) { if (req.url === '/') { res.write('welcome') req.end() // 最後需加上,告訴 Client 端結束 return } if (req.url === '/hello') { res.write('hello') res.end() return } if (req.url ==='/redirect') { res.writeHead(200, { 'Hi': 'Hi Kayla' }) res.end() return } res.writeHead(404) res.end() } sever.listen(5000) //進入此網站監聽 port,localhost:5000.....
localhost / 127.0.0.1 說明:
localhost(本地伺服器): 不經由網路卡傳輸,不受網路防火牆和網路卡相關的限制。
127.0.0.1(本機地址/本機伺服器): 透過網路卡傳輸,需依賴網路卡,受到網路防火牆和網路卡相關的限制。
localhost / 127.0.0.1 區別