Communication - HTTP & APIs
Author: @Hsu Tzu Ting
Date: Oct 8, 2020
性質: Tech Share

HTTP
- Why HTTP is needed
- 為什麼我們可以溝通
- 為什麼 Client 跟 Server 可以溝通
- 依循相同的協議
- HTTP(只)規範了 Client 和 Server 之間請求和應答的標準
- What is HTTP(HTTP的組成結構)
HTTP Request

- 8 Methods
- Get
- Head
- Post
- Put
- Delete
- Trace
- Options
- Connect
HTTP Response

- Status Code
- 1xx
- 2xx
- 成功類 (操作被成功接受並處理),例如:200 成功回應
- 3xx
- 重定向類 (需進一步操作才能完成),例如:301 成功轉向
- 4xx
- 客戶端錯誤類 (請求語法錯誤或無法完成請求),例如:404 找不到資源
- 5xx
- 伺服器錯誤類 (後端的問題),例如:500 伺服器錯誤
- Content-Type
- HTTP vs. HTTPS
- 為什麼比較安全
- HTTP不足之處
- 不具備加密的功能,無法對 Request、Response 內容進行加密
- Client、Server都不會對雙方的身份來進行驗證,只要求訊息正確
- 通訊過程使用 SSL/TLS 進行加密
- TCP Three-way Handshake
- SSL Handshake
- 提供對網站伺服器的身份認證,保護交換資料隱私與完整性
- 其他差異
- HTTP的URL是由「http://」起始與預設使用埠80,而HTTPS的URL則是由「https://」起始與預設使用埠443
- TCP/IP (Transmission Control Protocol / Internet Protocol)
- 1個協議?2個協議?
- Internet Protocol Suite(IPS)是不同的通信協議的大集合,因為其中的兩個核心協定:TCP和IP,而被簡稱為TCP/IP
- 將資料應該如何封裝、定址、傳輸、路由以及在目的地如何接收標準
- 將資料傳輸抽象化為四個層級
- 應用層 (Application Layer)
- 傳輸層 (Transport Layer)
- 網路互連層 (Internet Layer)
- 網路介面層 (Network Access Layer)
APIs
- What is APIs
- 怎麼得到販賣機裡面的飲料
- Front-end 如何取得 Database 裡的資料
- Call API
- Http method
- Create(新增):GET
- Read(讀取):POST
- Update(更新):PUT
- Delete(刪除):DELETE
- Recieve data
- 範例
- Why APIs are needed / Advantages of APIs
- RESTful API
- REST
- Representational State Transfer
- 軟體架構風格(並非標準)
- 一般的 API
- 獲得資料 GET http://mypage/api/getData
- GET http://mypage/api/get_data
- GET http://mypage/api/GetData
- 新增資料 POST http://mypage/api/createData
- 刪除資料 Delete http://mypage/api/deleteData/1
- 缺點
- RESTful API
- 獲得資料 GET http://mypage/api/data
- 新增資料 POST http://mypage/api/data
- 刪除資料 Delete http://mypage/api/data/1
- 該執行什麼藏在 http 的 method 裡面
- 特色
- 統一的 API 接口
- 無狀態(Stateless)
- 利用快取機制增加效能
- Server-side
- 在 GET 資源時,若該資源並沒有被變更,就可以利用 cache 機制減少 query,並且加快回應速度
- Client-side
- 透過 client 端 cache 記錄 cache 版本,若向 server 要求資源時發現 server 最新版與 cache 相同,則 client 端直接取用本地資源即可,不需要再做一次查詢
- gRPC
Socket
- 網路上的通訊端點
- IP Address + TCP Port
- 使用者之間只要記住對方的 Socket 號碼,便可以直接通訊,而不用考慮到底是經過何種網路、或主機放在什麼地方
Reference
「筆記」- 何謂 HTTP 傳輸協定
API 是什麼? RESTful API 又是什麼?