Request使用超簡單,同時(shí)支持https和重定向。
流:
任何響應(yīng)都可以輸出到文件流。
反過來,也可以將文件傳給PUT或POST請(qǐng)求。未提供header的情況下,會(huì)檢測文件后綴名,在PUT請(qǐng)求中設(shè)置相應(yīng)的content-type。
fs.createReadStream('file.json').pipe(request.put('http://mysite.com/obj.json'))
請(qǐng)求也可以pipe給自己。這種情況下會(huì)保留原content-type和content-length。
request.get('http://google.com/img.png').pipe(request.put('http://mysite.com/img.png'))
表單:
request支持application/x-www-form-urlencoded和multipart/form-data實(shí)現(xiàn)表單上傳。
x-www-form-urlencoded很簡單:
或者:
使用multipart/form-data不用操心設(shè)置header之類的瑣事,request會(huì)幫你解決。
HTTP認(rèn)證:
或
sendImmediately,默認(rèn)為真,發(fā)送一個(gè)基本的認(rèn)證header。設(shè)為false之后,收到401會(huì)重試(服務(wù)器的401響應(yīng)必須包含WWW-Authenticate指定認(rèn)證方法)。
sendImmediately為真時(shí)支持Digest認(rèn)證。
OAuth登錄:
定制HTTP header
User-Agent之類可以在options對(duì)象中設(shè)置。在下面的例子中,我們調(diào)用github API找出某倉庫的收藏?cái)?shù)和派生數(shù)。我們使用了定制的User-Agent和https.
cookies:
默認(rèn)情況下,cookies是禁用的。在defaults或options將jar設(shè)為true,使后續(xù)的請(qǐng)求都使用cookie.
通過創(chuàng)建request.jar()的新實(shí)例,可以使用定制的cookie,而不是request全局的cookie jar。
或者
注意,setCookie至少需要三個(gè)參數(shù),最后一個(gè)是回調(diào)函數(shù)。
可以用request的pipe方法很方便的獲取圖片的文件流
更多使用方法和說明可點(diǎn)擊這里繼續(xù)閱讀:https://github.com/mikeal/request/
示例
這里寫了一個(gè)很簡單的示例,用來抓取去哪兒網(wǎng)的酒店查詢數(shù)據(jù)(獲取酒店某一時(shí)間段內(nèi)各房型的價(jià)格排名):
這個(gè)例子源于一個(gè)做酒店業(yè)務(wù)的朋友,想知道自己在網(wǎng)站上提供給客戶的價(jià)格的競爭力:
1、如果提供的價(jià)格過低,自己賺到的錢就會(huì)少了,所以如果自己價(jià)格是最低了,就需要看第二低是多少,然后決定是否調(diào)整;
2、如果提供的價(jià)格過高,那么被搜索出來的排名結(jié)果就比較靠后,沒什么客戶來預(yù)訂酒店,業(yè)務(wù)就沒有了
因?yàn)樽龅木频觐A(yù)訂業(yè)務(wù)很多,比如超過2千家以上,如果一個(gè)一個(gè)依賴人工去查詢排名就比較被動(dòng),而且很難再做大,所以他的這個(gè)需求我分析了一下是可行的,而且可以做成一個(gè)很好的實(shí)時(shí)預(yù)警系統(tǒng)(當(dāng)然數(shù)據(jù)5~10分鐘會(huì)自動(dòng)在頁面刷新一次)。這樣才能保障利潤最大化,提高銷售、客戶部門的工作效率,加快酒店的合作數(shù)量和公司的人員擴(kuò)張:
1、不虧本,虧本的買賣不做;
2、如果發(fā)現(xiàn)提供的價(jià)格過低或是過高,需要支持調(diào)用平臺(tái)的api接口,直接修改價(jià)格;
3、有自動(dòng)生成分析報(bào)表功能,分析競爭對(duì)手在價(jià)格調(diào)整策略上的變化情況;
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com