【问题标题】:Request endpoint same application Expressjs?请求端点相同的应用程序 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);
    });
});

【问题讨论】:

    标签: express architecture api-design


    【解决方案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 函数,私有和公共端点都可以使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      相关资源
      最近更新 更多