[ Week4 ] - 網路基礎概論:關於 HTTP


Posted by Kayla on 2020-12-18

tags: 程式導師實驗計畫第四期 [NET101] Week4

為什麼需要協定(Protocol):

建立彼此能夠溝通的規範,排除各種狀況,讓溝通更順利。

HTTP:

HTTP 是什麼?

HyperText Transfer Protocol(超文本傳輸協定),網頁前後端溝通需透過 HTTP 或 HTTPS(S=Scures) 和 Sever 溝通。

HTTP request

如何看到一個網頁的內容?

  1. 瀏覽器傳送 HTTP request(有一定格式GET/Header/body...) 到 sever
  2. 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 請求方法

HTTP Status Code

2xx:成功回應
3xx:重定向訊息
4xx:用戶端錯誤
5xx:伺服器錯誤  

Status Code 說明
200 請求成功
301 永久被移動到新位置
302 暫時的移動到新位置
404 伺服器找不到請求的資源
500 內部伺服器錯誤

HTTP 狀態碼整理

實作一個 HTTP Sever

  1. 載入 Node.js module
  2. 建立sever
  3. 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.....
    

    node.js writeHead使用說明

localhost / 127.0.0.1 說明:

localhost(本地伺服器): 不經由網路卡傳輸,不受網路防火牆和網路卡相關的限制。
127.0.0.1(本機地址/本機伺服器): 透過網路卡傳輸,需依賴網路卡,受到網路防火牆和網路卡相關的限制。
localhost / 127.0.0.1 區別










Related Posts

Web開發學習筆記04—條件運算式(Conditional Statements)

Web開發學習筆記04—條件運算式(Conditional Statements)

關於 React 小書:可把函式當作參數傳入 setState

關於 React 小書:可把函式當作參數傳入 setState

Day02: GraphQL and GitHub GraphQL - Handling Data

Day02: GraphQL and GitHub GraphQL - Handling Data


Comments