关于node里面的cookie

事情是这个样子的:老大今天丢的代码,有一段没看懂,又没脸问人家,只好挺着粉嫩嫩的老不要脸来问大家:

router.post('/my_single_article', function(req, res, next) {
    var request = require('./utils/cookie-request').init(req,global.host);
     request.post(global.config.api('my_single_article'),
         {
             form: req.body,
             json:false
         },
         function(error, response, body){
             var result = JSON.parse(body);
             console.log(result+'12324');
                         console.log(global.host);
             res.render('tpl/my_single_article_list',
             {
                   page:result.data,
             });
         }
     );
 });

里面的这句 不是很懂

var request = require('./utils/cookie-request').init(req,global.host);

引用的cookie-request块如下:

var request = require('request');
var format = require("string-template");

exports.init = function(req, domain){
    // 保持与请求接口的session一致
    var url = domain || "http://album.laifuzi.cn";
    
    var j = request.jar();
    if(req && req.cookies) {
        for(x in req.cookies){
            var cookie = request.cookie(format('{0}={1}', x, req.cookies[x]));
            j.setCookie(cookie, url);
        }
    }
    return request.defaults({jar:j});
};

请各路大神不吝赐教 拜托啦

阅读 2.9k
3 个回答
var request = require('./utils/cookie-request').init(req,global.host);
// 等价于:
var request = require('./utils/cookie-request');
request = request.init(req,global.host);
// exports作为commonJS的一种用法,从而可以在别的文件中require这个方法
exports.init = function(req, domain){
    // 保持与请求接口的session一致
    var url = domain || "http://album.laifuzi.cn";
    
    var j = request.jar();
    //存在req,并且req里面存在cookies
    if(req && req.cookies) {
    遍历req.cookies的属性
        for(x in req.cookies){
        // 这个就是format,楼上说得都没错,cookie的形式一般就是key=value
            var cookie = request.cookie(format('{0}={1}', x, req.cookies[x]));
            j.setCookie(cookie, url);
        }
    }
    return request.defaults({jar:j});
};
var cookie = request.cookie(format('{0}={1}', x, req.cookies[x]));

这段没看懂吧?
format('{0}={1}={2}',1,2,3) => 1=2=3,格式化处理而已

var request = require('./utils/cookie-request').init(req,global.host);
// 等价于:
var request = require('./utils/cookie-request');
request.init(req,global.host);
// req和global.host是cookie-request中init的两个参数,req=>req ,global.host=>domain
exports.init = function(req, domain){
    // 保持与请求接口的session一致
    var url = domain || "http://album.laifuzi.cn";
    
    var j = request.jar();
    if(req && req.cookies) {
        for(x in req.cookies){
            var cookie = request.cookie(format('{0}={1}', x, req.cookies[x]));
            j.setCookie(cookie, url);
        }
    }
    return request.defaults({jar:j});
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题