1. 程式人生 > 實用技巧 >隨堂筆記5

隨堂筆記5

1. POST 請求方式

HTTP 的 POST 請求通常是用於提交資料,可以通過這篇文章來了解各種提交方式:四種常見的 POST 提交資料方式

application/x-www-form-urlencoded

最常見的一種 POST 請求,用 curl 發起這種請求也很簡單。

1
$ curl localhost:3000/api/basic -X POST -d 'hello=world'

multipart/form-data

這種請求一般涉及到檔案上傳。後端對這種型別請求的處理也複雜一些。

1
$ curl localhost:3000/api/multipart -F [email protected] -F hello=world

application/json

1
$ curl localhost:3000/api/json -X POST -d '{"hello": "world"}' -H "Content-Type: application/json"

2. 命令選項列表

-X

-X引數指定 HTTP 請求的方法。

$ curl -X POST https://www.example.com

-H

-H引數新增 HTTP 請求的標頭。

$ curl -H 'Accept-Language: en-US' -H 'Secret-Message: xyzzy' https://google.com

上面命令新增兩個 HTTP 標頭。

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

上面命令新增 HTTP 請求的標頭是Content-Type: application/json,然後用-d引數傳送 JSON 資料。

-d

-d引數用於傳送 POST 請求的資料體。

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

使用-d引數以後,HTTP 請求會自動加上標頭Content-Type : application/x-www-form-urlencoded。並且會自動將請求轉為 POST 方法,因此可以省略-X POST

-d引數可以讀取本地文字檔案的資料,向伺服器傳送。

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

上面命令讀取data.txt檔案的內容,作為資料體向伺服器傳送。

-F

-F引數用來向伺服器上傳二進位制檔案。

$ curl -F '[email protected]' https://google.com/profile

上面命令會給 HTTP 請求加上標頭Content-Type: multipart/form-data,然後將檔案photo.png作為file欄位上傳。

-F引數可以指定 MIME 型別。

$ curl -F '[email protected];type=image/png' https://google.com/profile

上面命令指定 MIME 型別為image/png,否則 curl 會把 MIME 型別設為application/octet-stream

-F引數也可以指定檔名。

$ curl -F '[email protected];filename=me.png' https://google.com/profile

上面命令中,原始檔名為photo.png,但是伺服器接收到的檔名為me.png

-b

-b引數用來向伺服器傳送 Cookie。

$ curl -b 'foo=bar' https://google.com

上面命令會生成一個標頭Cookie: foo=bar,向伺服器傳送一個名為foo、值為bar的 Cookie。

$ curl -b 'foo1=bar;foo2=bar2' https://google.com

上面命令傳送兩個 Cookie。

$ curl -b cookies.txt https://www.google.com

上面命令讀取本地檔案cookies.txt,裡面是伺服器設定的 Cookie(參見-c引數),將其傳送到伺服器。

-c

-c引數將伺服器設定的 Cookie 寫入一個檔案。

$ curl -c cookies.txt https://www.google.com

上面命令將伺服器的 HTTP 迴應所設定 Cookie 寫入文字檔案cookies.txt

-G

-G引數用來構造 URL 的查詢字串。

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

上面命令會發出一個 GET 請求,實際請求的 URL 為https://google.com/search?q=kitties&count=20。如果省略-G,會發出一個 POST 請求。

-k

-k引數指定跳過 SSL 檢測

$ curl -k https://www.example.com

-o

-o引數將伺服器的迴應儲存成檔案,等同於wget命令。

$ curl -o example.html https://www.example.com

上面命令將www.example.com儲存成example.html

-O

-O引數將伺服器迴應儲存成檔案,並將 URL 的最後部分當作檔名。

$ curl -O https://www.example.com/foo/bar.html

上面命令將伺服器迴應儲存成檔案,檔名為bar.html

-u

-u引數用來設定伺服器認證的使用者名稱和密碼。

$ curl -u 'bob:12345' https://google.com/login

上面命令設定使用者名稱為bob,密碼為12345,然後將其轉為 HTTP 標頭Authorization: Basic Ym9iOjEyMzQ1

curl 能夠識別 URL 裡面的使用者名稱和密碼。

$ curl https://bob:[email protected]/login

上面命令能夠識別 URL 裡面的使用者名稱和密碼,將其轉為上個例子裡面的 HTTP 標頭。

$ curl -u 'bob' https://google.com/login

上面命令只設置了使用者名稱,執行後,curl 會提示使用者輸入密碼。

參考連結