HTTP 懶人包

關於 HTTP 的東西都在這。

HTTP?

就是一個「協定」,也可以說是一套「標準」,就像千千為訂便當制定的標準,大家都可以透過這個標準來做溝通。

常見的 HTTP Method

  • GET 請求完整資料
  • HEAD 只請求 header 資料
  • POST 傳送資料到 server
  • PUT 更新資料內容(整筆取代)
  • PATCH 更新資料內容(只取代部分)
  • DELETE 刪除指定資料
  • OPTIONS 查看指定 server 提供哪些服務

常見的 Status code

大範圍:

  • 1xx 處理中等一下 (Hold on)
  • 2xx 成功 (Here you go)
  • 3xx 你去其他地方 (Go away)
  • 4xx 用戶端出錯 (You fucked up)
  • 5xx 伺服器出錯 (I fucked up)

例子:

  • 100 => 我有收到你的請求,請你繼續發下一個 request。
  • 200 => 成功,可能是取得資料或是傳送成功
  • 201 => 成功建立資料(通常是 POST)
  • 202 => 我收到你的請求了,但我還沒有處裡完(也不知道什麼時候會處理完)
  • 204 => 成功,但我沒有什麼想跟你回應的(例如 DELETE)
  • 206 => 成功(發生在 Client 只請求一部分的資料)
  • 300 => 有一個以上的回應結果,你或我挑出其中一個(沒有明確規範)
  • 301 => 永久搬家,下次不會再去原家,直接去新家
  • 302 => 暫時搬家,下次還是會先去原家,再決定去哪
  • 303 => 不會傳 Location 給你,而是直接幫你重新導向到某個地方(通常在 POST 成功後)
  • 304 => 客戶端有緩存檔案(含 If-Modified-Since 的 request header),可以節省傳輸流量
  • 400 => 語法錯誤 or 請求太大
  • 401 => 沒通過身分驗證
  • 403 => 你沒有權限存取這個資源
  • 404 => 沒有你要的東西
  • 405 => 伺服器不允許你使用的 HTTP Method
  • 410 => 東西曾經在,但現在已經不在了(永久),請你自己去別的地方找
  • 422 => 通常發生在 POST,可能是傳送的內容不對。
  • 429 => 請求太多啦,超過請求數量的最大限制。
  • 415 => 你請求的資料格式伺服器沒有提供(例如 Content-Type 不對)
  • 440 => 你的連線逾時啦,重新登入一遍再來吧。
  • 414 => 你的 URL 太長啦(通常是 GET 的 query 太長的關係,可以改用 POST 來解決)
  • 500 => 未預料的錯誤
  • 503 => 維護中或過載(提供比 500 更明確一點的資訊,像是「多久後會好」之類的)

補充-HTTP 只是其中一種交換資料的方式

以傳紙條的例子來說,可以把「訂便當」的格式想成是遵循 HTTP 這個協議來進行:

1
2
3
4
GET
送達時間:第四堂
雞腿飯 5
雞排飯 2

但如果是「借籃球」,就不需要採取 HTTP 協議來進行:

1
2
A:借五顆籃球
B:好

所以 HTTP 只是其中一種交換資料的方式,並不代表「只能用這種方式」來進行。就跟 TCP、UDP 一樣,他們只是兩種不同的協議,你可以根據自己的需求來決定要用哪一種協議,而不是一定要用特定哪種協議才是正確的。

所以你當然也可以自己定義一個協議來決定怎麼交換資料,不要被 HTTP 的方式給侷限住了。

SOAP 另一種跟伺服器溝通的協議 什麼是 DNS?
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×