请求端点相同的应用程序 Expressjs?

Posted

技术标签:

【中文标题】请求端点相同的应用程序 Expressjs?【英文标题】:Request endpoint same application Expressjs? 【发布时间】:2018-04-09 06:26:47 【问题描述】:

我有一个端点/register。发送到/user 的请求是一样的,但/register 是公开的,/user 是私有的,那么我想,再次调用 MongoDB 模型或向用户发出请求是正确的,如果它是对用户的请求如何,我的意思是,是否存在任何形式的调用端点/user 或只是一个请求?

router.post('/register', (req, res) => 
    let  body:  user   = req;
    user.type = 'normal';
    request.post('/user',  user ).end((err, data) => 
        res.json(data);
    );
);

【问题讨论】:

【参考方案1】:

如果我理解正确,您有两个端点,/user/register/user 不对普通用户开放,但可能对管理员等可用。现在您想用处理用户角色等的/register 端点包装 add-users-functionality,以确保添加用户安全。

下面是一个例子:

function addUser(req, res, userrole) 
  User
    .create(
      username: req.body.username,
      password: req.body.password,
      email: req.body.email,
      role: userrole,
    , (err, user) => 
      let response = ;

      if (err) 
        response = responseDueToError(err);
       else 
        console.log('User created with username:', user.username);
        response.status = HttpStatus.CREATED;
        response.message = user;
      

      return res.status(response.status).json(response.message);
    );


router.post('/user', (req, res) =>   // "private endpoint"
  addUser(req, res, 'admin');
;

router.post('/register', (req, res) =>   // "public endpoint"
  addUser(req, res, 'user');
;

所以不要在注册端点中创建新请求,而是创建一个单独的 addUser 函数,私有和公共端点都可以使用。

【讨论】:

以上是关于请求端点相同的应用程序 Expressjs?的主要内容,如果未能解决你的问题,请参考以下文章

Nodejs + expressjs在服务器超时后重播请求

从不同来源获取时 Expressjs cors 问题

ExpressJs 应用程序中的 cors-js 阻止了应该通过的请求

ExpressJS 后端挂起太多请求

ExpressJS / Angular 2 JWT 令牌

使用 CORS 登录 expressjs 应用程序