" />

欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

var request = require('request');

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

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

其實(shí)用node.js原生的http模塊就可以很方便地寫(xiě)出一個(gè)類(lèi)似的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模塊是一樣的,比如我們抓取新浪新聞首頁(yè)的內(nèi)容

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

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

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

對(duì)POST的支持

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

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

相關(guān)文章

  • yarn?install命令報(bào)錯(cuò)warning?package-lock.json?found解決辦法

    yarn?install命令報(bào)錯(cuò)warning?package-lock.json?found解決辦法

    這篇文章主要給大家介紹了關(guān)于yarn?install命令報(bào)錯(cuò)warning?package-lock.json?found的解決辦法,文中通過(guò)圖文將解決的辦法介紹的非常詳細(xì),還分享了更多yarn install遇到的報(bào)錯(cuò)及解決方案,需要的朋友可以參考下
    2024-02-02
  • nodejs對(duì)項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法

    nodejs對(duì)項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法

    這篇文章主要介紹了nodejs對(duì)項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • koa2 用戶注冊(cè)、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法

    koa2 用戶注冊(cè)、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法

    這篇文章主要介紹了koa2 用戶注冊(cè)、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-07-07
  • NodeJS學(xué)習(xí)筆記之Http模塊

    NodeJS學(xué)習(xí)筆記之Http模塊

    這里只是熟悉nodejs中的http模塊的API,一般在開(kāi)發(fā)過(guò)程中使用的是第三方的框架,比如說(shuō)Express。其中封裝了更為簡(jiǎn)單的構(gòu)建http服務(wù)器的API。
    2015-01-01
  • 淺析Node.js的Stream模塊中的Readable對(duì)象

    淺析Node.js的Stream模塊中的Readable對(duì)象

    這篇文章主要介紹了淺析Node.js的Stream模塊中的Readable對(duì)象,是Node.js入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-07-07
  • Koa2微信公眾號(hào)開(kāi)發(fā)之消息管理

    Koa2微信公眾號(hào)開(kāi)發(fā)之消息管理

    這篇文章主要介紹了Koa2微信公眾號(hào)開(kāi)發(fā)之消息管理,這一節(jié)我們就來(lái)看看公眾號(hào)的消息管理。并實(shí)現(xiàn)一個(gè)自動(dòng)回復(fù)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 淺析Node.js非對(duì)稱(chēng)加密方法

    淺析Node.js非對(duì)稱(chēng)加密方法

    本篇文章主要給大家分享了Node.js非對(duì)稱(chēng)加密方法以及代碼實(shí)例講解,對(duì)此有興趣的朋友參考學(xué)習(xí)下吧。
    2018-01-01
  • Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫(kù)功能完整示例

    Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫(kù)功能完整示例

    這篇文章主要介紹了Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫(kù)功能,結(jié)合完整實(shí)例形式分析了nodejs針對(duì)MongoDB數(shù)據(jù)庫(kù)的連接及增刪改查基本操作技巧,需要的朋友可以參考下
    2019-02-02
  • Node.js的HTTP模塊、URL模塊與supervisor工具介紹

    Node.js的HTTP模塊、URL模塊與supervisor工具介紹

    這篇文章介紹了Node.js的HTTP模塊、URL模塊與supervisor工具,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 切換Node.js鏡像源的方法詳解

    切換Node.js鏡像源的方法詳解

    Node.js 是一個(gè)非常流行的 JavaScript 運(yùn)行環(huán)境,擁有許多強(qiáng)大的功能和庫(kù),使得它在 Web 開(kāi)發(fā)、服務(wù)器端編程等領(lǐng)域中廣泛使用,在本文中,我們將介紹如何切換 Node.js 的鏡像源,并提供一些思考和難點(diǎn),幫助讀者更好地理解這個(gè)問(wèn)題,需要的朋友可以參考下
    2024-01-01

最新評(píng)論