大家好,我是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)
8.更多討論
使用restclient,httpie,ab等工具測(cè)試rest
提問(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ā)、留言、拍磚~