NodeJS получает значение из formData x-www-form-urlencoded - PullRequest
0 голосов
/ 05 мая 2019

Я использую HttpClient в Angular для отправки данных форм Nodejs.

 resetPasswordRequest(email){
    this.httpOptions={
      headers: new HttpHeaders({
        'Content-Type':'application/x-www-form-urlencoded'
      })
    }

    const formData = new FormData();

     formData.append('email',email);

    return this.http.post("http://localhost:3001/forgotPassword",formData,this.httpOptions);

  }

Позже в NodeJS у меня есть app.use (bodyParser.urlencoded ({extended: true}).

Я могу получить req.body, но в другом формате, как показано ниже:

{ '-----------------------------24875245787704\r\nContent-Disposition: form-data; name':
   '"email"\r\n\r\abcd@gmail.com\r\n-----------------------------24875245787704--\r\n' }

Я не уверен, что было пропущено. Не могли бы вы уточнить и помочь получить значение электронной почты? Я получаю req.body.email как неопределенное.

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

от MDN FormData:

Используется тот же формат, который использовалась бы формой, если бы тип кодировки был установлен на "multipart/form-data"

, который объясняет, почему вы получаете данные в этом формате.

Вместо этого вы можете использовать HttpParams в Angular:

const formData = new HttpParams();
formData.set('email', email)

return this.http.post("http://localhost:3001/forgotPassword", formData.toString(), this.httpOptions);

toString дает вам urlencoded формат. Из документов :

Сериализация тела в закодированную строку, где пары ключ-значение (разделенные =) разделены & s

0 голосов
/ 05 мая 2019

вам нужно проанализировать formData в nodejs.см. этот вопрос или найдите похожие.также вы уверены, что вам нужно использовать formData?Вы можете просто отправить объект в теле

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