先前一直比較關注前端的東西,對后端了解較少。不過一直對Node.js比較感興趣,去年12月還去參加了阿里的CNODE交流聚會。
以后希望通過這里的博客分享一些學習Node.js的筆記。一方面總結了自己的學習心得,另一方面也可以和大家一起分享交流。
嗯,大概就是這樣子。
這篇就先介紹一個Node.js的模塊——request。有了這個模塊,http請求變的超簡單。
Request使用超簡單,同時支持https和重定向。
var request = require('request');request('http://www.google.com', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) // 打印google首頁 }})任何響應都可以輸出到文件流。
request('http://google.com/doodle.png').p表單request支持application/x-www-form-urlencoded和multipart/form-data實現表單上傳。
x-www-form-urlencoded很簡單:
request.post('http://service.com/upload', {form:{key:'value'}})或者:
request.post('http://service.com/upload').form({key:'value'})使用multipart/form-data不用操心設置header之類的瑣事,request會幫你解決。
var r = request.post('http://service.com/upload')var form = r.form()form.append('my_field', 'my_value')form.append('my_buffer', new Buffer([1, 2, 3]))form.append('my_file', fs.createReadStream(path.join(__dirname, 'doodle.png'))form.append('remote_file', request('http://google.com/doodle.png'))或
request.get('http://some.server.com/', { 'auth': { 'user': 'username', 'pass': 'password', 'sendImmediately': false }});sendImmediately,默認為真,發送一個基本的認證header。設為false之后,收到401會重試(服務器的401響應必須包含WWW-Authenticate指定認證方法)。
sendImmediately為真時支持Digest認證。
User-Agent之類可以在options對象中設置。在下面的例子中,我們調用github API找出某倉庫的收藏數和派生數。我們使用了定制的User-Agent和https.
var request = require('request');var options = { url: 'https://api.github.com/repos/mikeal/request', headers: { 'User-Agent': 'request' }};function callback(error, response, body) { if (!error && response.statusCode == 200) { var info = JSON.parse(body); console.log(info.stargazers_count + " Stars"); console.log(info.forks_count + " Forks"); }}request(options, callback);默認情況下,cookies是禁用的。在defaults或options將jar設為true,使后續的請求都使用cookie.
var request = request.defaults({jar: true})request('http://www.google.com', function () { request('http://images.google.com')})通過創建request.jar()的新實例,可以使用定制的cookie,而不是request全局的cookie jar。
var j = request.jar()var request = request.defaults({jar:j})request('http://www.google.com', function () { request('http://images.google.com')})或者
var j = request.jar()var cookie = request.cookie('your_cookie_here')j.setCookie(cookie, uri, function (err, cookie){})request({url: 'http://www.google.com', jar: j}, function () { request('http://images.google.com')})注意,setCookie至少需要三個參數,最后一個是回調函數。
新聞熱點
疑難解答