【Web】 — HTTP
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
是一種網路架構風格,他並不是一種標準。通須滿足以下規則 :
- client — server 架構
- 分層系統
- 利用快取機制增加效能
server-side: 在 GET 資源時,若該資源並沒有被變更,就可以利用 cache 機制減少 query,並且加快回應速度 ; client-side: 透過 client 端 cache 記錄 cache 版本,若向 server 要求資源時發現 server 最新版與 cache 相同,
則 client 端直接取用本地資源即可,不需要再做一次查詢(省機器運算及流量 = 省錢) - 通訊協定具有無狀態性
不能讓兩隻 API 做同一個動作 ! 假設完成轉賬手續必須先 call A 再 call B 的話,若做完 A 後斷線導致 B 無法執行,後續要處理 A -> B 的方式會很麻煩,且不應該假設伺服器知道目前的狀態! 因此設計出來的 API 不能有狀態性 - 統一界面
使用 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" : "和小明約會"
}
}