隨堂筆記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
|
$ 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 會提示使用者輸入密碼。