HTTP Request
認識 HTTP Request
這邊要初略認識兩個主要的概念,分別是:
- 什麼是 HTTP?
- 它的請求又是什麼
HTTP 全名是 Hypertext Transfer Protocol 是所謂 網頁通訊協定,用來規範網頁跟伺服器的基本互動規則,它遵循 Client-server model 架構,在這個架構下客戶端(client)跟伺服器(server)互動的模式,固定是由 client 發送請求給 server ,再由 server 回傳回應給 client,其中由客戶端發出的請求,就是所謂的 HTTP Request。
圖片來源:https://medium.com/@lokeshchinni123/django-request-and-response-lifecycle-fae8f6467e3d
client 不限於瀏覽器,其他像是 postman 等可以發送 request 的工具都可以是 client 。
請求要請求什麼?
以作者的自身經驗來說,最常見的請求目的有:
- 取得資源
- 提交/修改刪除數據
- 驗證身份
取得資源
用日常生活的例子來說:安迪最近想出國,他習慣坐某一家航空公司的飛機,決定上網查詢這家航空公司的航班資訊,從點擊連結進入航空公司官網到後續取得航班資訊的過程,都是取得資源的操作。
提交 / 修改刪除數據
最簡單的例子就是會員資料,當你要註冊某網站會員時,通常會有一個表單要你填寫基本資料,按下送出時就會執行「提交」。而成功註冊為某網站會員後,當你想要修改你的基本資料,例如信箱手機等等,這時就會進行「修改刪除」的操作。
看到這邊,不知道你會不會好奇一件事:
那伺服器如何知道每次的請求是為了哪個目的?
請求的架構
每次發出請求時,都需要提供幾項必要資訊,讓伺服器了解要如何進行回應,我自己會理解為「請求的基本架構」,主要會具備以下幾個部分:
- start-line
- http-headers
- http body (非必需)
圖片來源: MDN
Start-line
上面圖片紅框的值,分別傳達三個重要的訊息:
- POST -> Http method: 用來告知伺服器這次的行為,如
GET
(取得資源) ,POST
(提交數據) ,DELETE
(刪除數據) 等等 - HTTP -> Target URL: 向誰發出此次請求,以上面為例就是星宇航空網站的路由
- 1.1 -> Http version:上面提過 HTTP 是一個傳輸協定,但隨著網路越複雜與發達,它的傳輸設計也有持續優化
Http headers
上面了解了 Start-line 的內容後,現在進到 http headers 的部分,
圖片來源: MDN
Http body
當你要攜帶較為敏感的資料(例如使用者資訊、信用卡資料等)時,就應該要把資料存在 Http body 內,這是為什麼呢?因為