本文介绍了无法在Express JS节点中获取请求有效负载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的Node Express代码,

This is my Node Express Code,

(function () {
    'use strict';
    var fs = require('fs');
    var cors = require('cors');
    var bodyParser = require('body-parser');
    var express = require('express'),
        app = express(),
        port = 8112;


    app.use(cors());
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
    app.listen(port);


    app.route('/abc')
        .post(abc);


    function abc(req,res){
        console.dir(req.body);
        res.header("Access-Control-Allow-Origin", "*");
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        res.sendStatus(200);
    }

})();

但是我将请求正文设为

但是在Chrome的网络标签中,我可以看到请求有效负载. 请注意,此POST调用之前会触发OPTIONS.

But in my network Tab in Chrome I can see request payload. Please note OPTIONS is fired before this POST call.

请求标头

请求有效载荷

推荐答案

您需要发送:Content-Type: application/json以使bodyParser.json()工作,如果没有它,您的JSON有效负载将不会被解析,这就是您得到的原因:{}

You need to send: Content-Type: application/json for bodyParser.json() to work, without it, your JSON payload won't be parsed, that's why you get: {}

来自文档:

使用.fetch的示例:

fetch('http://localhost:4200/dashboard', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({dd: 'dd'})
});

这篇关于无法在Express JS节点中获取请求有效负载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 02:01