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

时间:2017-10-27 15:29:27

标签: express architecture api-design

我有一个端点/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 个答案:

答案 0 :(得分:0)

如果我理解正确,您有两个端点,/user/register/user不适用于普通用户,但可能适用于管理员等。现在,您希望将添加用户功能包含在处理用户角色的/register端点中等,使添加用户安全。

以下是如何执行此操作的示例:

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