为什么json-parser解析错了我的json

时间:2018-01-04 01:13:53

标签: javascript angularjs node.js

我正在使用node.js作为服务器端,使用angular作为前端部分的应用程序。我遇到了一个简单的post方法的问题,问题是当我将json发送到服务器时,它就像json键一样。我正在使用身体解析器,也许问题出在那?这是我的代码:

角:

var request = $http({
    method: "POST",
    url: 'http://localhost:3000/register',
    data: {
        "username": "filip"
    },
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
});

的node.js

var express = require("express");
var bodyParser = require("body-parser");
var morgan = require("morgan");
var app = express();
var config = require("./config");
var mongodb = require("mongodb")

app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());
app.use(morgan("dev"));

app.post("/register", function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');

    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', true);
    console.log(req.body);
});

这就像我在服务器上得到的那样:

{ '{"username":"filip"}': '' }

我刚刚开始学习node.js,我坚持这个简单的事情, 有人帮忙吗?

1 个答案:

答案 0 :(得分:1)

您使用application/x-www-form-urlencoded作为内容类型,这是另一种mime类型而不是JSON。要发送JSON,您可以使用

$http.post('http://localhost:3000/register', { "username": "filip" })

请注意,我跳过了在标题中指定内容类型。如果您未指定其他内容,则application/json是POST的默认内容类型。