Метод Put в API всегда получает пустое тело запроса - PullRequest
0 голосов
/ 25 апреля 2020

Я создал NodeJS Restful API и буквально каждый маршрут, кроме одного, работает. У меня есть Angular интерфейс, использующий httpClientModule для отправки запросов.

Когда я пытаюсь сделать запрос на поставку для одного указанного элемента c, запрос становится пустым при поступлении на сервер. У меня есть 3 других маршрута, делающих пут-запросы, и все они работают нормально. Может кто-нибудь объяснить, что здесь происходит. Я посмотрел на некоторые другие темы, которые обсуждают аналогичные проблемы, но ни одна из проблем не совпадает с моей. Я действительно не могу gr asp, что происходит.

Вот некоторый соответствующий код. Заранее спасибо.

Метод API

router.put("/api/login/:_id", passport.authenticate("jwt", { session: false }), (req, res) => {
  console.log(req.body)
  User.findById(req.params._id)
    .then((user) => {
      bcrypt.compare(req.body.password, user.password).then((isMatched) => {
        if (isMatched) {
          User.findByIdAndUpdate(_id, { password: req.body.password })
            .then(() => {
              res.sendStatus(200);
            })
            .catch((err) => {
              console.log("Password update error" + err);
            });
        } else {
          res.status(400);
        }
      });
    })
    .catch((err) => {
      console.log("Password Update Error" + err);
      res.status(400);
    });
});

Angular Метод обслуживания

newPassword(_id: any, password:any):Observable<any>
  {    
    return this.http.put(this.url+`/admin/api/login/${_id}`, password);
  }

1 Ответ

1 голос
/ 25 апреля 2020

что если вы оберните тело пароля в объект по запросу? Допустим,

newPassword(_id: any, password: any): Observable < any >
{
    return this.http.put(this.url + `/admin/api/login/${_id}`, {password});
}

Таким образом, тело содержит атрибут password.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...