最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

在api服务器中更改req对象?

运维笔记admin11浏览0评论

在api服务器中更改req对象?

在api服务器中更改req对象?

我最近选择了一个拥有开发团队的客户。我正在开发一个已经开发的网站,并且遇到了一些对我来说有点奇怪的事情。

我总是认为在路由处理中混淆请求对象本质上是不好的(我在这里可能完全错误)。

下面的代码让我感到困惑,因为我不确定为什么他们将req.query.msg分配给某个东西而不是仅仅创建一个变量并在ejs页面渲染上传递它。

/********************************************************
*                                                       *
* CHANGE PASSWORD ROUTE THAT POSTS THE NEW PASSWORD TO  *
* DATABASE.                                             *
*                                                       *
********************************************************/



app.post('/client/password', function (req, res) {
 var url = URLS.ClientChangePW;

 if(req.session.securityquestions[0].SSN !== "null" || req.session.securityquestions[0].SSN !== "undefined"){
   if(req.body.pwd !== req.body.pwdconf){
     res.redirect('/client/changePassword' + config.PWD_MISMATCH);
   } else {
     var ssn = req.session.securityquestions[0].SSN;
     while(ssn.length < 9){
       ssn = "0" + ssn;
     }

     url = url.replace("@ssn", ssn);
     url = url.replace("@newpw", req.body.pwd);
   }

   request.put(url, function (err, xres, body) {

     var data = JSON.parse(body);


     if(data.status === 200){

       email(req.session.securityquestions[0].EMAIL, "none", "forgotpw", function(result){

         if(result){
           req.query.msg = "Your password has been reset.";
         } else {
           req.query.msg = "Request unsuccessful. Please call number here for assistance.";
         }
         res.render('pages/login', {
           session: req.session,
           msg: req.query.msg
         });
       });
     } else {
       req.query.msg = "Request unsuccessful. Please call number here for assistance.";
       res.render('pages/login', {
         session: req.session,
         msg: req.query.msg
       });
     }
   });
 }
});

再一次,我从未真正搞过req对象,所以我可能错了。我一直认为客户端设置了请求,我们使用它来发送响应。

回答如下:

我不确定为什么他们将req.query.msg分配给某个东西而不是仅仅创建一个变量并在ejs页面渲染上传递它。

似乎没有任何理由在这里分配req.query.msg财产。如果这是我的代码,我将使用一个单独的局部变量。

再一次,我从未真正搞过req对象,所以我可能错了。我一直认为客户端设置了请求,我们使用它来发送响应。

虽然这不是这里发生的事情,但在Express开发中常常使用中间件在req对象上为请求处理程序设置状态,以便在路由堆栈中使用。 req对象是规范对象,您在处理请求时保持特定于请求的状态。如果您只有一个请求处理函数处理请求,那么没有理由将状态放在req对象上,因为您可以在该请求处理函数中使用局部变量。但是,如果您正在使用中间件,其工作是在最终到达请求处理程序之前进行设置,那么req对象就是通常放置设置状态的位置。你会注意到req.session也用在这段代码中。 .session属性是由请求处理中的一些中间件放在那里的。

因此,在使用中间件时将状态添加到req对象是很常见的。但是,在您显示的代码中的.msg属性示例中,没有特别的理由将它放在req对象上,因为它的值仅在本地函数中需要,所以它可以很容易(我会更清楚地说)在局部变量中。

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论