看影片:
由上到下:從 HTTP 協定開始講起
HTTP: Hypertext Transfer Protocol 超文本傳輸安全協定; 簡單來說就是一種規則
HTTPS: Hypertext Transfer Protocol Secure 超文本傳輸安全協定
request and response 都各有 header and body,且帶有不同資訊
- header 是額外的資訊
- body 為主要內容
Get 獲取資訊; post 執行動作
put: 完全取代內容; patch 修改部分內容
常見的 HTTP Status code
- 1 開頭:較少見;client 端要進行一些處理
- 2 開頭:成功; 200: ok; 204: 伺服器成功處理請求,但沒有返回內容(沒有要給你什麼資訊)
- 3 開頭:重新導向; 301: 永久被移到新的位置; 302:暫時被移到其他位置
- 4 開頭:用戶端錯誤,例如語法錯誤;常見 404 not found:你要的東西這裡沒有
- 5 開頭:server 端錯誤,常見 500:伺服器出錯
參考資料:HTTP狀態碼
總結:HTTP 是一個協定;瀏覽器是一個程式,任何的操作都是瀏覽器在幫你送發 request,所以它會有一些限制,自己寫程式就可以繞過那些限制。
!實作一個超簡易 HTTP Server:這個章節看了一遍不太懂
由下到上:從 TCP/IP 開始談起
OSI 七層:一個組織把網路標準化,分成七層;每一層都負責不同的事情;偏理論
主流實作為 TCP/IP 模型:只有四層;主要是要解決網路分層的問題
IP: Internet Protocol 網路協議地址
- 虛擬 IP、浮動 IP 與固定 IP
- 固定 IP:不會變;可以直接連線;伺服器一定會有一個固定 IP
- 浮動 IP:每次連接的時候,IP 位址都不一樣
- 虛擬 IP:只有在內網(例如家裡連同一個 wifi)才連的到;在不同的網路裡面,IP 位址可以重複;因為不一定每個電腦都需要 IP 位址,可以節省很多資源
- 公司對外只有一個固定 IP,但在公司之間的溝通,會有很多個IP 位址
- 虛擬 IP 透過數據機與外部網路連接
- myIP 可以看到 IP 位址
- 虛擬 IP、浮動 IP 與固定 IP
Port 連接阜:區別在同一台電腦上的不同服務
- 常用 port: http 80、https 443、ftp 21
TCP 與 UDP:TCP (Transmission Control Protocol) 協定比較可靠,保證連接的可靠性、UDP (User Datagram Protocol) 協定在意的是快速,比較多應用在視訊的時候,速度快才不會累格
TCP 可靠的原因:淺談三次握手(three-way handshake)
- 靠過三次動作來確保連接的可靠性
總結:
- HTTP/FTP:紙條上的內容
- TCP/UDP:傳紙條時的三次確認/不確認,一直傳紙條
- IP:寄紙條,寫收件人與寄件人
- 實體層:郵差幫忙寄信
你一定聽過的名詞:API
- API: application programming interface
透過 API 可以讓雙方交換資料
API 與 Web API: Web API -> HTTP API:透過 HTTP 協定的 API
!串接 HTTP API 實戰:這個章節看了一遍不太懂
資料格式的選擇
- 純文字與自定義格式:在 request 與 response 時資料會有特定格式。
- 常用的資料格式 XML 及 JSON
- XML: Extensible Markup Language
- 用標籤來定義資訊
- JSON: JavaScript Object Notation
- 是因為 js 而生,與 js 相容性超好;佔用體積比 XML 來得小
- 長得像物件
- 任何一種資料格式在任何一種程式語言都可以用
透過網路交換資料的第一種方式:SOAP
- soap: Simple Object Access Protocol
- 現在很少用了
透過網路交換資料的第二種方式:其他 SOAP 以外的 HTTP API
- 大多數的 API 都在這裡
RESTful 到底是什麼?
- 它不是一種協定,而是一種風格
- 現在的 API 大多數都是這種風格,因為比較直覺
- !API 串接實戰:這裡看一遍不太懂,要試試看才知道在做什麼
透過網路交換資料的第 n 種方式:跳脫 HTTP 的限制
- HTTP 只是一個 Protocol,除了 HTTP 以外,還有其他 Protocol 也在進行資料交換。
各種好用工具及指令
- 必學指令:curl
- curl https://github.com/Lidemy/mentor-program-4th-LPGUEI > github.html:可以下載整個 html 的頁面
- curl - I 後面接網址:只要 header 不要 body
- nslookup: 可以解析 DNS 與 IP 位址
- ping: 去測試是否能夠連到那個主機
- telnet: 去測試該網址的某個 port 有沒有開
看穿網路的本質,才能不被迷惑
- 網路的本質是拿來溝通的,協定是一種規模化的溝通,要規模化就必需要標準化;身為工程師就是理解這些規範及標準
- 這堂課是講網路知識以及該怎麼串 API