NodeJS从FormData获得价值x-www-form-urlencoded

时间:2019-05-05 09:18:17

标签: node.js angular

我在Angular中使用HttpClient将表单数据发送到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 :(得分:0)

您需要在nodejs中解析formData。参见this question或找到类似的内容。您还确定需要使用formData吗?你可以在体内发送物体

答案 1 :(得分:0)

来自MDN FormData

  

它使用的格式与将编码类型设置为"multipart/form-data"

时使用的格式相同。

这说明了为什么要获取这种格式的数据。

您可以改用angular的HttpParams

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

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

toString为您提供urlencoded格式。来自docs

  

将正文序列化为编码字符串,其中键值对(用=分隔)用&s分隔