对应该相对简单的事情有问题。我正在发送一个带有 JSON DATA 的 POST 请求,如下所示:
curl -H "Content-Type : application/json" -X POST -d '{"searchbar":"cat"}' http://someurl.com/public/search
在我的应用程序中,我有一条路线……在“/路线”下,我将 bodyParser 设置如下:
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
在路线中我有 var searchbar = req.body.searchbar
但是,变量 searchbar 始终未定义。
我可以看到正文中的数据如下:
{ '{searchbar:cat}': '' }
显然,curl 没有正确发送数据(所以我的 curl 不正确),或者 bodyParser 没有解析数据。任何人都可以帮忙吗?
编辑:路线/index.js
var express = require('express');
var bodyParser = require('body-parser');
var moment = require('moment');
var fs = require('fs');
var router = express.Router();
router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
router.all('*',function(req,res,next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS");
next();
});
router.post('/public/search/', function (req, res) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma, Origin, Authorization, Content-Type, X-Requested-With");
res.header("Access-Control-Allow-Methods", "GET, PUT, POST, OPTIONS");
var searchbar = req.body.searchbar;
console.log("Searchbar is : " + searchbar);
console.log("body is : " + require('util').inspect(req.body, false, null));
});
modeul.exports = router;
更新:
我使用邮递员(chrome插件)并设法发送和解析数据 - 在这种情况下CURL一定有问题......