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) })
其次它還支持抓取時(shí)附加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)文章
yarn?install命令報(bào)錯warning?package-lock.json?found解決辦法
這篇文章主要給大家介紹了關(guān)于yarn?install命令報(bào)錯warning?package-lock.json?found的解決辦法,文中通過圖文將解決的辦法介紹的非常詳細(xì),還分享了更多yarn install遇到的報(bào)錯及解決方案,需要的朋友可以參考下2024-02-02nodejs對項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法
這篇文章主要介紹了nodejs對項(xiàng)目下所有空文件夾創(chuàng)建gitkeep的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08koa2 用戶注冊、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法
這篇文章主要介紹了koa2 用戶注冊、登錄校驗(yàn)與加鹽加密的實(shí)現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07淺析Node.js的Stream模塊中的Readable對象
這篇文章主要介紹了淺析Node.js的Stream模塊中的Readable對象,是Node.js入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-07-07Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫功能完整示例
這篇文章主要介紹了Nodejs實(shí)現(xiàn)的操作MongoDB數(shù)據(jù)庫功能,結(jié)合完整實(shí)例形式分析了nodejs針對MongoDB數(shù)據(jù)庫的連接及增刪改查基本操作技巧,需要的朋友可以參考下2019-02-02Node.js的HTTP模塊、URL模塊與supervisor工具介紹
這篇文章介紹了Node.js的HTTP模塊、URL模塊與supervisor工具,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06