【问题标题】:Node Js get post data as json keyNode Js获取post数据作为json键
【发布时间】:2017-07-02 20:29:36
【问题描述】:

NodeJS 文件 server.js

    var express     = require('express');
    var app         = express();
    var bodyParser  = require('body-parser');
    var morgan      = require('morgan');
    var mongoose    = require('mongoose');
    var moment      = require('moment');
    var http        = require('http');
    var jwt         = require('jsonwebtoken'); 
    var config      = require('./config'); 
    var User        = require('./app/models/user'); 

    var port = process.env.PORT || 8080; 
    mongoose.connect(config.database);
    app.set('superSecret', config.secret); 
    app.use(bodyParser.urlencoded());
    app.use(bodyParser.json());

    app.post('/onboardAuthentication', function(req, res) {
      res.setHeader('Access-Control-Allow-Origin', '*');
      res.setHeader('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT, DELETE');
      res.setHeader('contentType', 'application/x-www-form-urlencoded;charset=utf-8;');  
      res.json(req.body);
    });
var server = http.createServer(app);
server.listen(port);
console.log('Magic happens at http://localhost:' + port);

前端 API 命中的 Angular API 命中代码

var serviceRoot='http://localhost:8080/onboardAuthentication';

            var deferred=$q.defer();

            var req = {
                method: 'POST',
                url: serviceRoot,
                data: { key: 'value' },
                contentType: 'application/x-www-form-urlencoded;charset=utf-8;'
            };

            $http(req).then(goodResponse,badResponse);

            return deferred.promise;

    function goodResponse(response)
    {
        console.log("Good response");
        console.log(response);

    }
    function badResponse(response)
    {
        console.log("Bad response");
        console.log(response.data);
    }

它以这种格式打印结果,它将发布数据作为键和值是空白的,但我想使用 body-parser 节点 js 访问 json 格式的发布数据。

{"key":"value"}: ""

【问题讨论】:

    标签: angularjs json node.js body-parser


    【解决方案1】:

    如果你想发送简单的文本/ASCII 数据,那么 x-www-form-urlencoded 就可以了, 默认情况下,Angular 会将 application/json 发送到服务器。

    var req = {
                    method: 'POST',
                    url: serviceRoot,
                    data: { key: 'value' },
                    // comment this line, you don't need it
                    //contentType: 'application/x-www-form-urlencoded;charset=utf-8;'
                };
    

    【讨论】:

    • 问题仍然存在,我认为这个问题来自节点 js 方面
    • Object { data: "", status: 200, headers: qd/
    • 同时删除 res.setHeader('contentType', 'application/x-www-form-urlencoded;charset=utf-8;');
    • removed same result {"key":"value"}: "" get data in object formate
    • 嘿,请运行相同的代码并检查发生这种情况的方式,我认为这个问题与 body-parse 相关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 2021-07-10
    • 2021-05-04
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多