Возникла проблема с чем-то, что должно быть относительно простым. Я отправляю запрос POST с данными JSON следующим образом:
curl -H "Content-Type : application/json" -X POST -d '{"searchbar":"cat"}' http://someurl.com/public/search
В моем приложении у меня есть маршрут... в разделе "/routes" я установил 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...