HTTP&RestFUL

*一炁化三清*發表於2024-04-22

HTT&PREST

  • REST,全稱是 Representational State Transfer,中文意為表現層狀態轉移。它是一種設計風格,而不是標準,主要用於客戶端和伺服器互動類的軟體。RESTful 是實現 REST 設計風格的 web 服務。 資源狀態轉換,在web中資源的唯一標識式URL,透過URL路徑定位網上的資源。
  • HTTP,全稱是 HyperText Transfer Protocol,中文意為超文字傳輸協議。它是一種用於分散式、協作式和超媒體資訊系統的應用層協議。HTTP 是全球資訊網的資料通訊的基礎。

HTTP 請求方法

根據 HTTP 標準,HTTP 請求可以使用多種請求方法。
HTTP1.0 定義了三種請求方法: GET, POST 和 HEAD 方法。
HTTP1.1 新增了六種請求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

序 號 方法 描述
1 GET 用於請求伺服器傳送某個資源。GET 請求不應該對伺服器上的資源做出任何更改,並且應該是冪等的(即多次重複的請求應該產生相同的結果)。例如,當你在瀏覽器中輸入 URL 地址時,瀏覽器會傳送一個 GET 請求來獲取該 URL 對應的網頁。
2 HEAD 類類似於 GET 請求,但伺服器不返回請求的資源主體,只返回響應頭。HEAD 請求通常用於獲取資源的元資訊,如資源的大小、型別等,而不需要獲取資源的實際內容。
3 POST 用於向伺服器提交資料,通常用於提交表單或上傳檔案。POST 請求可能會導致伺服器上的狀態更改,並且不一定是冪等的。例如,在提交登錄檔單時,瀏覽器通常會傳送一個 POST 請求,將使用者提供的資訊傳送到伺服器進行處理。
4 PUT 用於向伺服器上傳資源,通常用於更新已存在的資源或建立新的資源。PUT 請求應該是冪等的,即多次執行相同的 PUT 請求應該產生相同的結果。
5 DELETE 用於請求伺服器刪除指定的資源。DELETE 請求應該是冪等的,即多次執行相同的 DELETE 請求應該產生相同的結果。
6 CONNECT 用於建立到伺服器上指定埠的隧道,通常用於代理伺服器。
7 OPTIONS 用於請求伺服器返回支援的 HTTP 方法和其他選項。例如,客戶端可以傳送 OPTIONS 請求來確定伺服器支援哪些 CORS(跨域資源共享)策略。
8 TRACE 回顯伺服器收到的請求,主要用於測試或診斷。
9 PATCH 用於在請求-響應鏈上的每個節點獲取傳輸路徑。TRACE 請求通常用於除錯和測試,以檢視請求在經過各種代理伺服器和中介軟體時如何被修改。

Rest和Http什麼關係?

REST 和 HTTP 的關係在於,REST 通常使用 HTTP 作為其通訊協議。REST 透過使用 HTTP 的方法,如 GET、POST、PUT、DELETE 等,來實現資源的獲取、建立、修改和刪除等操作。這些方法也被稱為 CRUD(Create、Read、Update、Delete)操作。
在 RESTful 的設計中,每個 URL 代表一種資源,而透過 HTTP 的方法來操作這些資源。例如,我們可以透過傳送 GET 請求到某個 URL 來獲取資源,透過 POST 請求來建立新的資源,透過 PUT 請求來更新資源,以及透過 DELETE 請求來刪除資源。
同時,RESTful 設計也強調無狀態性,即每次請求都應包含處理請求所需的所有資訊,而不依賴於之前的請求。這使得 RESTful 服務更易於擴充套件,並且更適合於網際網路的分散式環境。
總的來說,REST 是一種設計風格,而 HTTP 是實現這種設計風格的一種協議。在實際應用中,RESTful web 服務通常使用 HTTP 作為其通訊協議,但理論上,也可以使用其他的協議來實現 REST 設計風格。

curl工具

  • curl是一個非常實用的、用來與伺服器之間傳輸資料的工具;
  • 支援的協議包括 (DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP),curl設計為無使用者互動下完成工作;
  • curl提供了一大堆非常有用的功能,包括代理訪問、使用者認證、ftp上傳下載、HTTP POST、SSL連線、cookie支援、斷點續傳...。

用法

$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com 
$ curl -d '{"login": "emma", "pass": "123"}' -H 'Content-Type: application/json' https://google.com/login 
引數 含義
-A 指定客戶端的使用者代理標頭,即User-Agent。curl 的預設使用者代理字串是curl/[version]。
-b 用來向伺服器傳送 Cookie。
-c 將伺服器設定的 Cookie 寫入一個檔案
-d 用於傳送 POST 請求的資料體。
--data-urlencode 等同於-d,傳送 POST 請求的資料體,區別在於會自動將傳送的資料進行 URL 編碼。
-e 用來設定 HTTP 的標頭Referer,表示請求的來源。
-F 用來向伺服器上傳二進位制檔案。
-G 用來構造 URL 的查詢字串。
-H 新增 HTTP 請求的標頭。
-i 列印出伺服器回應的 HTTP 標頭。
-I 向伺服器發出 HEAD 請求,然會將伺服器返回的 HTTP 標頭列印出來。
-k 指定跳過 SSL 檢測。
-L 會讓 HTTP 請求跟隨伺服器的重定向。curl 預設不跟隨重定向。
--limit-rate 用來限制 HTTP 請求和回應的頻寬,模擬慢網速的環境。
-o 將伺服器的回應儲存成檔案,等同於wget命令。
-O 將伺服器回應儲存成檔案,並將 URL 的最後部分當作檔名。
-s 將不輸出錯誤和進度資訊。
-S 指定只輸出錯誤資訊,通常與-s一起使用。
-u 用來設定伺服器認證的使用者名稱和密碼。
-v 輸出通訊的整個過程,用於除錯。
-x 指定 HTTP 請求的代理。
-X 指定 HTTP 請求的方法。

參考

https://blog.csdn.net/u011482647/article/details/115480457
https://www.ruanyifeng.com/blog/2019/09/curl-reference.html