" />

最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js中的http請求客戶端示例(request client)

 更新時間:2017年05月04日 16:16:22   作者:OurJS  
本篇文章主要介紹了Node.js中的http請求客戶端示例(request client),具有一定的參考價值,感興趣的小伙伴們可以參考一下

Node.JS有一個request模塊,可以很方便的抓取網(wǎng)頁內(nèi)容。最簡單的一個示例:

var request = require('request');

request('http://www.google.com', function (error, response, body) {
 if (!error && response.statusCode == 200) {
  console.log(body);
 }
})

由上例可以看出用request發(fā)起一個http請求確實(shí)非常簡單,不過唯一的問題就是,request模塊的第三方依賴比較多,導(dǎo)致這個模塊非常地大,要占用好幾M的空間。

其實(shí)用node.js原生的http模塊就可以很方便地寫出一個類似的request的功能,只要幾十行即可:

var http = require('http')
var url  = require('url')


var request = function(reqUrl, data, cb, headers) {
 var dataType = typeof data

 if (dataType == 'function') {
  headers = cb
  cb   = data
  rawData = null
 } else if (dataType == 'object') {
  rawData = JSON.stringify(data)
 } else {
  rawData = data
 }

 var urlObj = url.parse(reqUrl)

 var options = {
   hostname : urlObj.hostname
  , port   : urlObj.port
  , path   : urlObj.pathname
  , method  : rawData ? 'post' : 'get'
 }

 headers && (options.headers = headers)


 var req = http.request(options, function(res) {
  var receives = []

  if (res.statusCode !== 200) {
   cb && cb(new Error('Request Failed. Status Code: ' + res.statusCode + ' ' + reqUrl))
   return
  }

  res.on('data', function(chunk) {
   receives.push(chunk)
  })

  res.on('end', function() {
   var resData = Buffer.concat(receives).toString()
   try {
    resData = JSON.parse(resData)
   } catch (e) { }

   cb && cb(null, res, resData)
  })
 })

 req.on('error', function(e) {
  cb && cb(e)
 })

 rawData && req.write(rawData)

 req.end()
}


module.exports = request

使用接口與request模塊是一樣的,比如我們抓取新浪新聞首頁的內(nèi)容

request('http://news.sina.com.cn', function(err, res, data) {
 console.log('geted', data)
})

其次它還支持抓取時附加cookie等header認(rèn)證信息,如

request('http://news.sina.com.cn', function(err, res, data) {
 console.log('get with cookie', data)
}, { cookie: '_sessionid=1234567890' })

對POST的支持

request('http://news.sina.com.cn', { postdata: 'json' }, function(err, res, data) {
 console.log('get with cookie', data)
}, { cookie: '_sessionid=1234567890' })

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于npm?i幾種常見命令的區(qū)別詳解

    關(guān)于npm?i幾種常見命令的區(qū)別詳解

    npm(Node.js Package Manager)是一個Node.js的包管理工具,用來解決Node.js代碼部署問題,下面這篇文章主要給大家介紹了關(guān)于npm?i幾種常見命令的那點(diǎn)事,需要的朋友可以參考下
    2023-03-03
  • node.js爬取中關(guān)村的在線電瓶車信息

    node.js爬取中關(guān)村的在線電瓶車信息

    這篇文章主要給大家介紹了關(guān)于利用node.js如何爬取中關(guān)村的在線電瓶車信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用node.js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境

    Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境

    Egret基于TypeScript開發(fā)的,而TypeScript編譯工具tsc是基于Node.js 開發(fā)的。所以在安裝過程中,我們先需要對于基礎(chǔ)支持工具進(jìn)行安裝。
    2014-07-07
  • 一行命令搞定node.js 版本升級

    一行命令搞定node.js 版本升級

    今天,又發(fā)現(xiàn)一個超級簡單的升級node.js的方法。一行命令搞定,省去了重新編譯安裝的過程。
    2014-07-07
  • node.js域名解析實(shí)現(xiàn)方法詳解

    node.js域名解析實(shí)現(xiàn)方法詳解

    這篇文章主要介紹了node.js域名解析實(shí)現(xiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了node.js使用dns.lookup()及dns.resolve4()進(jìn)行域名解析的相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-11-11
  • Node.js 中的 Buffer緩沖區(qū)實(shí)例詳解

    Node.js 中的 Buffer緩沖區(qū)實(shí)例詳解

    Buffer 是 Node.js 提供的用于處理二進(jìn)制數(shù)據(jù)的類,在瀏覽器中我們可以使用 Blob 或 ArrayBuffer,但 Node 環(huán)境下使用 Buffer 更加高效和靈活,本文給大家介紹Node.js 中的 Buffer緩沖區(qū),感興趣的朋友一起看看吧
    2025-04-04
  • Dapr+NestJs編寫Pub及Sub裝飾器實(shí)戰(zhàn)示例

    Dapr+NestJs編寫Pub及Sub裝飾器實(shí)戰(zhàn)示例

    這篇文章主要為大家介紹了Dapr+NestJs編寫Pub及Sub裝飾器的實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • Restify中接入Socket.io報Error:Can’t set headers的錯誤解決

    Restify中接入Socket.io報Error:Can’t set headers的錯誤解決

    這篇文章主要給大家介紹了在Restify中接入Socket.io報Error:Can’t set headers的錯誤解決方法,文中介紹的非常詳細(xì),對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Nodejs獲取網(wǎng)絡(luò)數(shù)據(jù)并生成Excel表格

    Nodejs獲取網(wǎng)絡(luò)數(shù)據(jù)并生成Excel表格

    這篇文章主要為大家詳細(xì)介紹了Nodejs獲取網(wǎng)絡(luò)數(shù)據(jù)并生成Excel表格的具體實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Node.js API詳解之 module模塊用法實(shí)例分析

    Node.js API詳解之 module模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 module模塊用法,結(jié)合實(shí)例形式分析了Node.js API中module模塊基本功能、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05

最新評論

桃江县| 平定县| 清水县| 新和县| 武义县| 洛南县| 探索| 台安县| 舞阳县| 临澧县| 邹城市| 玉溪市| 当阳市| 湖南省| 恩平市| 井冈山市| 东乡| 西青区| 玛曲县| 皮山县| 宜城市| 长春市| 宁南县| 穆棱市| 金平| 汝南县| 东城区| 鱼台县| 观塘区| 浦城县| 岗巴县| 兴宁市| 西宁市| 兴隆县| 茂名市| 古浪县| 四子王旗| 清镇市| 永和县| 白山市| 望城县|