Curl發(fā)送HTTP請(qǐng)求

大家好,我是IT修真院深圳分院第01期學(xué)員,一枚正直純潔善良的web程序員。今天給大家分享一下,修真院官網(wǎng)JAVA(職業(yè))任務(wù)2的知識(shí)點(diǎn)——Curl發(fā)送HTTP請(qǐng)求。

1.背景介紹

在linux上有多種接口測(cè)試工具,如restclient,httpie,ab等,在項(xiàng)目中最常用的是curl,用來(lái)進(jìn)行簡(jiǎn)單的測(cè)試。

2.知識(shí)剖析

2.1 curl

curl是很方便的Rest客戶端,可以很方便的完成許多Rest API測(cè)試的需求,利用curl指令,可以送出HTTP GET, POST, PUT, DELETE, 也可以改變 HTTP header來(lái)滿足使用REST API需要的特定條件。

2.2 測(cè)試rest時(shí)常用的參數(shù)

-X/--request? ? [GET|POST|PUT|DELETE|…]? ? 使用指定的HTTP method 發(fā)出指定的request

-H/--header? ? “XX:XXX”? ? 設(shè)定request的header

-i/--include? ? 顯示response的header

-d/--data? ? “XX=XXX”? ? 設(shè)定HTTP parameters

-v/--verbose? ? 輸出比較多的信息

-u/--user? ? “XX:XXX”? ? 使用者帳密

-b/--cookie? ? cookie文件路徑? ?使用cookie

2.3 curl發(fā)送請(qǐng)求寫(xiě)法

-X后面加HTTP method,如:curl -X [GET|POST|PUT|DELETE] "http://www.jnshu.com" (純英文、數(shù)字不用加引號(hào),其他情況不加引號(hào)可能會(huì)出問(wèn)題)

2.4 curl發(fā)送請(qǐng)求時(shí)可以附加一些信息

1)設(shè)置header:curl -i -H "Content-Type: application/json" http://www.jnshu.com/aaa

2)設(shè)置HTTP parameter:curl -X POST -d "param1=value1?m2=value2" 或者 -d "param1=value1" -d "param2=value2"

3)session認(rèn)證:curl -X GET 'http://www.jnshu.com/aaa' --header 'sessionid:1234567890987654321'

4) 使用cookie:curl -i --header "Accept:application/json" -X GET -b ~/cookie.txt http://www.jnshu.com/aaa

5) 文件上傳:curl -i -X POST -F 'file=@/User/my_file.txt' -F 'name=file_name'

6) HTTP基本認(rèn)證(HTTP Basic Authentication):curl -i --user username:password http://www.rest.com/api/foo'

2.5 wget訪問(wèn)HTTP資源

wget命令用來(lái)從指定的URL下載文件,訪問(wèn)接口時(shí)返回的數(shù)據(jù)會(huì)保存到本地。(自己測(cè)試可以訪問(wèn)GET和POST接口)

例:wget http://www.jnshu.com/aaa

wget? --post-data="xx=xxx" http://www.jnshu.com/aaa

3.常見(jiàn)問(wèn)題

實(shí)際使用

4.解決方案

在服務(wù)器上運(yùn)行curl命令,加上url和相關(guān)參數(shù)

5.編碼實(shí)戰(zhàn)

6.擴(kuò)展思考

curl發(fā)送POST請(qǐng)求時(shí),數(shù)據(jù)可以采用xml格式或json格式, 并且可以發(fā)送本地的json和xml文件。

1)? ?curl -H 'content-type: application/json' -X POST -d '{"name":"shfbjsf"}' http://www.jnshu.com/aaa

2)? ?curl -X POST -H 'content-type: application/json'? -d @/apps/jsonfile.json http://www.jnshu.com/aaa

3)? ?curl -H 'content-type: application/xml' -X POST -d '<?xml version="1.0" encoding="UTF-8"?><name>aaa</name>' http://www.jnshu.com/aaa

4)? ?curl -X POST -H 'content-type: application/json'? -d @/apps/xmlfile.json http://www.jnshu.com/aaa\

7.參考文獻(xiàn)

參考一:使用curl指令測(cè)試rest

參考二:使用curl進(jìn)行接口測(cè)試

8.更多討論

使用restclient,httpie,ab等工具測(cè)試rest

PPT鏈接


Curl發(fā)送HTTP請(qǐng)求_騰訊視頻


提問(wèn):curl需要在linux安裝嗎?

答:curl時(shí)linux系統(tǒng)命令,不需要安裝。

提問(wèn):有postman了為什么還要用curl或weget測(cè)試接口呢?

答:postman在有些情況下是不好用的,比如服務(wù)器限制內(nèi)網(wǎng)訪問(wèn),這個(gè)時(shí)候用curl更便捷。

提問(wèn):rest客戶端是什么?

答:rest客戶端是指可以發(fā)送rest請(qǐng)求的客戶端工具,如restclient,postman等,都屬于rest客戶端。

鳴謝

感謝大家觀看

------------------------------------------------------------------------------------------------------------------------

今天的分享就到這里啦,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)、留言、拍磚~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容