nodejs-无法获取表单数据

时间:2017-07-10 12:56:31

标签: node.js express

我使用Express JS(v 4.15.3)构建节点api。

我试图从表单中获取值(通过POSTman客户端)。我无法取得它。

这是我的表格

带有标题的

enter image description here

没有标题

enter image description here

这就是我尝试获取它的方式:

router.post('/login',function(req, res, next) {
    var email= req.body.email;
    //var email= req.query.email; //also tried this
    res.json({
      value: email
    });
});

我没有收到错误。

注意:我已经包含了身体解析器。

var bodyParser = require('body-parser'); 
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

谁能告诉我为什么我没有得到这个价值?谢谢! 这是我第一次尝试学习Node JS。

2 个答案:

答案 0 :(得分:1)

你的代码似乎完全没问题。虽然问题在于您从POSTman客户端发送请求的方式。

当您使用使用表单数据发送请求时,POSTman会将此请求发送为 multipart / form-data ,它实际上会按以下格式发送您的数据:< / p>

POST /api/login HTTP/1.1
Host: localhost:3000
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="email"

example@example.com
----WebKitFormBoundaryE19zNvXGzXaLvS5C

对于 multipart / form-data 请求,如果您确实需要在应用程序中进行文件上传,则需要使用 multer 中间件。但是对于您的情况,您只需发送数据而不使用使用表单数据(取消选中使用表单数据复选框),并将content-type标头设置为:

Content-Type: application/x-www-form-urlencoded

因此,在完成所有这些修改后,您的原始网络请求应如下所示:

POST /api/login HTTP/1.1
Host: localhost:3000
Content-Type: application/x-www-form-urlencoded
Cache-Control: no-cache

email=example@example.com

用于构建请求和响应的POSTman屏幕捕获如下:

POSTman screen capture for building the request and response

原始请求和响应的POSTman屏幕截图如下:

POSTman screen capture for Raw request and response

希望这会对你有所帮助。

答案 1 :(得分:0)

尝试将Content-Type设置为application / json,并在json格式的raw write中设置body,如下所示:

{
    "email":"example@gmail.com"
}

以下是您可以参考的图片。

enter image description here

enter image description here

如果您觉得有帮助,请不要忘记给出答案。