一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用curl指令模擬HTTP請(qǐng)求

 不老松 2020-02-21

curl 是很方便的Rest客戶端,可以很方便的完成許多Rest API測(cè)試的需求,甚至,如果是需要先登入或認(rèn)證的rest api,也可以進(jìn)行測(cè)試,利用curl指令,可以送出HTTP GET, POST, PUT, DELETE, 也可以改變 HTTP header來(lái)滿足使用REST API需要的特定條件。

curl的參數(shù)很多,這邊僅列出目前測(cè)試REST時(shí)常用到的:

-X/--request [GET|POST|PUT|DELETE|…]  使用指定的http method發(fā)出 http request-H/--header                           設(shè)定request裡的header-i/--include                          顯示response的header-d/--data                             設(shè)定 http parameters -v/--verbose                          輸出比較多的訊息-u/--user                             使用者帳號(hào)、密碼-b/--cookie                           cookie

linux command line 的參數(shù)常,同一個(gè)功能常會(huì)有兩個(gè)功能完全相同參數(shù),一個(gè)是比較短的參數(shù),前面通常是用-(一個(gè)-)導(dǎo)引符號(hào),另一個(gè)比較長(zhǎng)的參數(shù),通常會(huì)用--(兩個(gè)-)導(dǎo)引符號(hào)

在curl 使用說(shuō)明

 -X, --request COMMAND  Specify request command to use      --resolve HOST:PORT:ADDRESS  Force resolve of HOST:PORT to ADDRESS      --retry NUM   Retry request NUM times if transient problems occur      --retry-delay SECONDS When retrying, wait this many seconds between each      --retry-max-time SECONDS  Retry only within this period>

參數(shù)-X--request兩個(gè)功能是一樣的,所以使用時(shí) ex:curl -X POST http://www./ 跟 curl--request POST http://www./ 是相等的功能

GET/POST/PUT/DELETE使用方式

-X 後面加 http method,

curl -X GET 'http://www./api/users'curl -X POST 'http://www./api/users'curl -X PUT 'http://www./api/users'curl -X DELETE 'http://www./api/users'

url要加引號(hào)也可以,不加引號(hào)也可以,如果有非純英文字或數(shù)字外的字元,不加引號(hào)可能會(huì)有問(wèn)題,如果是網(wǎng)碼過(guò)的url,也要加上引號(hào)

HEADER

在http header加入的訊息

curl -v -i -H 'Content-Type: application/json' http://www./users

HTTP Parameter

http參數(shù)可以直接加在url的query string,也可以用-d帶入?yún)?shù)間用&串接,或使用多個(gè)-d

# 使用`&`串接多個(gè)參數(shù)

curl -X POST -d 'param1=value1&param2=value2'

# 也可使用多個(gè)`-d`,效果同上

curl -X POST -d 'param1=value1' -d 'param2=value2'curl -X POST -d 'param1=a 0space'

# 'a space' url encode後空白字元會(huì)編碼成'%20'為'a%20space',編碼後的參數(shù)可以直接使用

curl -X POST -d 'param1=a%20space'

post json 格式得資料

如同時(shí)需要傳送request parameter跟json,request parameter可以加在url後面,json資料則放入-d的參數(shù),然後利用單引號(hào)將json資料含起來(lái)(如果json內(nèi)容是用單引號(hào),-d的參數(shù)則改用雙引號(hào)包覆),header要加入”Content-Type:application/json”跟”Accept:application/json”

curl http://www.?modifier=kent -X PUT -i -H 'Content-Type:application/json' -H 'Accept:application/json' -d '{'boolean' : false, 'foo' : 'bar'}'

# 不加'Accept:application/json'也可以

curl http://www.?modifier=kent -X PUT -i -H 'Content-Type:application/json' -d '{'boolean' : false, 'foo' : 'bar'}'

需先認(rèn)證或登入才能使用的service

許多服務(wù),需先進(jìn)行登入或認(rèn)證後,才能存取其API服務(wù),依服務(wù)要求的條件,的curl可以透過(guò)cookie,session或加入在header加入session key,api key或認(rèn)證的token來(lái)達(dá)到認(rèn)證的效果。

session 例子:

後端如果是用session記錄使用者登入資訊,後端會(huì)傳一個(gè) session id給前端,前端需要在每次跟後端的requests的header中置入此session id,後端便會(huì)以此session id識(shí)別前端是屬於那個(gè)session,以達(dá)到session的效果

curl --request GET 'http://www./api/users' --header 'sessionid:1234567890987654321'

cookie 例子

如果是使用cookie,在認(rèn)證後,後端會(huì)回一個(gè)cookie回來(lái),把該cookie成檔案,當(dāng)要存取需要任務(wù)的url時(shí),再用-b cookie_file 的方式在request中植入cookie即可正常使用

# 將cookie存檔

curl -i -X POST -d username=kent -d password=kent123 -c  ~/cookie.txt  http://www./auth

# 載入cookie到request中 

curl -i --header 'Accept:application/json' -X GET -b ~/cookie.txt http://www./users/1

檔案上傳

curl -i -X POST -F 'file=@/Users/kent/my_file.txt' -F 'name=a_file_name'

這個(gè)是透過(guò) HTTP multipart POST 上傳資料, -F 是使用http query parameter的方式,指定檔案位置的參數(shù)要加上@

HTTP Basic Authentication (HTTP基本認(rèn)證)

如果網(wǎng)站是採(cǎi)HTTP基本認(rèn)證, 可以使用 --user username:password 登入

curl -i --user kent:secret http://www./api/foo'

認(rèn)證失敗時(shí),會(huì)是401 Unauthorized

HTTP/1.1 401 UnauthorizedServer: Apache-Coyote/1.1X-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockCache-Control: no-cache, no-store, max-age=0, must-revalidatePragma: no-cacheExpires: 0X-Frame-Options: DENYWWW-Authenticate: Basic realm='Realm'Content-Type: text/html;charset=utf-8Content-Language: enContent-Length: 1022Date: Thu, 15 May 2014 06:32:49 GMT認(rèn)證通過(guò)時(shí),會(huì)回應(yīng) 200 OKHTTP/1.1 200 OKServer: Apache-Coyote/1.1X-Content-Type-Options: nosniffX-XSS-Protection: 1; mode=blockCache-Control: no-cache, no-store, max-age=0, must-revalidatePragma: no-cacheExpires: 0X-Frame-Options: DENYSet-Cookie: JSESSIONID=A75066DCC816CE31D8F69255DEB6C30B; Path=/mdserver/; HttpOnlyContent-Type: application/json;charset=UTF-8Transfer-Encoding: chunkedDate: Thu, 15 May 2014 06:14:11 GMT

可以把認(rèn)證後的cookie存起來(lái),重複使用

curl -i --user kent:secret http://www./api/foo' -c ~/cookies.txt

登入之前暫存的cookies,可以不用每次都認(rèn)證

curl -i  http://www./api/foo' -b ~/cookies.txt

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    日韩精品一区二区一牛| 国产精品偷拍视频一区| 欧美日韩综合在线精品| 日韩午夜老司机免费视频| 亚洲妇女黄色三级视频| 狠狠亚洲丁香综合久久| 国产午夜福利不卡片在线观看| 亚洲天堂国产精品久久精品| 欧美整片精品日韩综合| 东京热加勒比一区二区| 九九热精彩视频在线播放| 国产av一区二区三区四区五区| 免费精品一区二区三区| 午夜成年人黄片免费观看| 国产人妻熟女高跟丝袜| 日本一区二区三区黄色| 狠色婷婷久久一区二区三区| 国产亚洲系列91精品| 丰满熟女少妇一区二区三区| 99久久人妻精品免费一区| 中文字幕人妻一区二区免费| 丰满少妇被猛烈撞击在线视频| 厕所偷拍一区二区三区视频| 欧美一区二区三区在线播放| 欧美又大又黄刺激视频| 久久99爱爱视频视频| 欧美黑人暴力猛交精品| 中文字幕欧美视频二区| 一区二区欧美另类稀缺| 高清免费在线不卡视频| 日本丁香婷婷欧美激情| 精品久久综合日本欧美| 欧美一区二区三区高潮菊竹| 欧美成人久久久免费播放| 久久精品中文扫妇内射| 日韩和欧美的一区二区三区 | 又大又紧又硬又湿又爽又猛| 韩日黄片在线免费观看| 国产欧美性成人精品午夜| 成人你懂的在线免费视频| 在线懂色一区二区三区精品|