node.js - 关于node里面的cookie

【字号: 日期:2022-09-13浏览:31作者:雯心

问题描述

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

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});};请各路大神不吝赐教 拜托啦

问题解答

回答1:

var cookie = request.cookie(format(’{0}={1}’, x, req.cookies[x]));

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

回答2:

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=>domainexports.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});};回答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});};

相关文章: