curl 命令 -- GET 和 POST



簡介

curl 是一種命令行工具,顧名思義就是 client 的 URL 工具。

該工具功能十分強大,命令行參數多達幾十種,完全可以媲美 postman 這一類圖形界面工具。

文檔:https://catonmat.net/cookbooks/curl

參考:


GET

發送 GET 請求,並將結果打印出來

curl https://catonmat.net

發送 GET 請求,並將 response 的 body 輸出到文件里

curl -o output.txt https://catonmat.net


POST

發送空的 POST 請求

curl -X POST https://catonmat.net

發送有參數的 POST 請求

curl -d 'login=Queen&password=123' -X POST https://google.com/login

當使用 -d 參數傳入表單數據時,會自動將 Content-Type 設置為 application/x-www-form-urlencoded,同時當使用 -d 參數時,-X POST 可以省略。

-d 參數也可以分開寫:curl -d 'login=Queen' -d 'password' https://google.com/login

發送可重定向的有參 POST 請求

curl -L -d 'tweet=hi' https://api.twitter.com/tweet

curl 默認不支持重定向,加入 -L 參數明確要求可以任意重定向。

發送帶 JSON 數據的 POST 請求

curl -d '{"login":"Queen","password":"123"}' -H 'Content-Type: application/json' https://google.com/login

使用 -d 參數傳入 JSON 數據,同時必須使用 -H 參數顯式指明 Content-Typeapplication/json

發送帶 XML 數據的 POST 請求

curl -d '<user><login>ann</login><password>123</password></user>' -H 'Content-Type: application/xml' https://google.com/login

使用 -d 參數傳入 xml 數據,同時必須使用 -H 參數顯式指明 Content-Typeapplication/xml

發送帶純文本數據的 POST 請求

curl -d 'hello world' -H 'Content_Type: text/plain' https://google.com/login

使用 -d 參數傳入純文本數據,同時使用 -H 參數顯示指明 Content-Typetext/plain

發送帶某個文件中的數據的 POST 請求

curl -d '@data.txt' https://google.com/login

使用 -d 參數傳入數據,其中 @ 符號后面指明數據來源於那個文件。

顯式將 POST 數據進行 URL 編碼

curl --data-urlencode 'comment=hello 中國' https://google.com/login

使用 -d 時,默認認為 POST 數據已經進行了 URL 編碼,但是如果數據並沒有經過編碼處理,那么就需要使用 --data-urlencode 將未被編碼的數據進行 URL 編碼之后,再發送

POST 一個二進制文件

curl -F 'newfile=@pig.png' https://google.com/profile

使用 -F 參數強制讓 curl 發送一個多部分表單數據,會自動將 Content-Type 設置為 multipart/form-data,該語句讓 curl 讀取 pig.png 中的數據並上傳至 https://google.com/profile ,並將文件命名為 newfile

發送一個二進制數據,並設置它的 MIME 類型

curl -F 'newfile=@pig.png;type=image/png'

使用 -F 參數上傳了一個二進制文件,並設置該文件的 MIME 類型為 image/png,若不設置,則默認為 application/octet-stream

MIME 類型 (Multipurpose Internet Mail Extensions,媒體類型) 是一種標准,用來表示文檔、文件和字節流的性質和格式。

發送二進制數據並更改文件名稱

curl -F 'newfile=@pig.png;filename=cat.png' https://google.com/login

和前兩個類似,該語句通過 POST 請求發送一個二進制數據,並且更改文件名稱,這樣服務器看到的就不是原始名稱 pig.png,而是新名稱 cat.png,並且保存為 newfile


構建一個查詢字符串(使用 -G 參數)

該語句可以為 GET 請求構建查詢字符串,通過 -G-d 或者 --data-urlencode 參數結合使用。-G 參數會將所有的 -d 參數使用 & 連接,再用 ? 和 URL 連接。

構建兩個查詢參數

curl -G -d 'q=kitties' -d 'count=20' https://google.com/search

該語句會生成一個 GET 請求:https://google.com/search?q=kitties&count=20

注意:如果遺漏 -G 參數,就會變成一個 POST 請求

URL 編碼一個查詢參數

curl -G --data-urlencode 'comment=Spring is coming' https://catonmat.net

--data-urlencode-d 類似,但是會有 URL 編碼的功能,上面的 GET 請求會變成 https://catonmat.net/comment=Spring%20is%20coming



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM