【Web】 — HTTP

Shih Ting, Tai
4 min readJul 18, 2021
【面試常問考題】HTTP 跟 HTTPS 的差別?HTTP 是一個超文本的傳輸協議,規定伺服器傳輸超文本(用超連結組織的文本和內容)到瀏覽器的標準。 
HTTPS 是在 HTTP 的基礎上,利用 SSL/TLS 加密數據包(安全版的 HTTP)。
兩者的最大的區別就是 HTTPS 比 HTTP 安全,當然安全是要付出代價的,安全也代表著要承受更多的「檢查」,所以 HTTPS 較費時費力費錢。

HTTP (Hypertext Transfer Protocol ) 超文本傳輸協定

HTTP 是一個超文本的傳輸協議,規定伺服器傳輸超文本(用超連結組織的文本和內容)到瀏覽器的標準。

是一種往返於瀏覽器伺服器的通訊協定,為了讓設備之間不但能認出彼此,也能夠根據不同情境選擇溝通的方式。由客戶端 (Client) 發起請求(request) 開始。服務端 (server) 接收請求後再將回應 (response) 傳送給客戶端後結束。

HTTP 包含 HTTP Header 及 HTTP body :

  • HTTP Header 包含驗證的資訊
  • HTTP Body 包含要更新的資料及查詢的條件

HTTP 協定中,定義了多種不同的 Method 作為服務的請求方法,常用的 Method 有 :

  • GET 讀取
  • POST 新增 (萬用動詞,處理其他要求)
  • PATCH 更新部分內容
  • HEAD (似get,只回傳HTTP Header(較安全)

Request Format 請求資源的格式:

Restful

是一種網路架構風格,他並不是一種標準。通須滿足以下規則 :

  1. client — server 架構
  2. 分層系統
  3. 利用快取機制增加效能
    server-side: 在 GET 資源時,若該資源並沒有被變更,就可以利用 cache 機制減少 query,並且加快回應速度 ; client-side: 透過 client 端 cache 記錄 cache 版本,若向 server 要求資源時發現 server 最新版與 cache 相同,
    則 client 端直接取用本地資源即可,不需要再做一次查詢(省機器運算及流量 = 省錢)
  4. 通訊協定具有無狀態性
    不能讓兩隻 API 做同一個動作 ! 假設完成轉賬手續必須先 call A 再 call B 的話,若做完 A 後斷線導致 B 無法執行,後續要處理 A -> B 的方式會很麻煩,且不應該假設伺服器知道目前的狀態! 因此設計出來的 API 不能有狀態性
  5. 統一界面
    使用 HTTP Verb: GET/POST/PUT/DELETE
CRUD 為 Create(新增)、Read(讀取)、Update(更新)與Delete(刪除)的縮寫

Response Format 回應資源的格式:

XML

是一種標記式 (markup) 語言,使用 < > 定義標記,標記的頭尾之間夾帶著內容,可以想像成是 HTML 標籤語法的延伸。

<robot>
<name>小花</name>
<height>158</height>
<weight>50</weight>
<hobby>
<food>香蕉、蘋果</food>
<relationship>和小明約會</relationship>
</hobby>
</robot>

JSON

JavaScript Object Notation 的縮寫,它參考了 JavaScript 中物件結構的表示方式。較為輕量、易於閱讀。

{
"name" : "小花",
"height" : "158",
"weight" : 50,
"hobby" :{
"food" : "香蕉、蘋果",
"relationship" : "和小明約會"
}
}

--

--

Shih Ting, Tai

Enhance overall happiness by improving human-computer interaction to benefit people.