У меня есть простой cURL (я думаю, это правильно), который размещает небольшой объект JSON для моего экспресс-сервера:
curl -d "{'test': 'this'}" localhost:3000/rest/user/authenticate
Я настроен как:
// set up body parsing in express to be able to get parse JSON posts
server.use(express.json());
server.use(express.urlencoded());
и иметь обработчик, который принимает маршрут:
JSON = require('JSON')
module.exports = {
authenticateUser: function create(req, res){
var postedObject = req.body
console.log(postedObject)
res.send('Handle Post: authenticateUser');
}
}
обработчик получает вызов, но он неожиданно регистрирует тело JSON:
{ '{\'test\': \'this\'}': '' }
Таким образом, весь мой объект выглядит как сторона имени объекта JSON Name: Value. независимо от того, что я публикую, похоже, добавляет ценность. Если я не сделаю что-то вроде этого:
curl -d "a=a" localhost:3000/rest/user/authenticate
который регистрирует:
{'a':'a'}
поэтому я не устанавливаю правильные заголовки? Неправильно настроен? Я планирую копать через экспресс-код, но задавался вопросом, может ли кто-нибудь узнать, прежде чем я найду решение. В любом случае, с поиском/индексированным ответом на это в Интернете будет приятно.
update 1
ok Мне нужно добавить заголовок в cURL
curl -H "Content-Type: application/json" -d "{'test': 'this'}" localhost:3000/rest/user/authenticate
который дает ошибку:
Parsing: {'test': 'this'}
SyntaxError: Unexpected token '
at Object.parse (native)
at C:\blah\node_modules\express\node_modules\connect\lib\middleware\json.js:86:19
at IncomingMessage.onEnd (C:blah\node_modules\express\node_modules\connect\node_modules\raw-body\index.js:109:7)
at IncomingMessage.g (events.js:180:16)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
ИЛИ curl -H "Content-Type: application/json" -d "{test: 'this'}" localhost: 3000/rest/user/authenticate
который дает ошибку:
Parsing: {test: 'this'}
SyntaxError: Unexpected token t
at Object.parse (native)
at C:\blah\node_modules\express\node_modules\connect\lib\middleware\json.js:86:19
at IncomingMessage.onEnd (C:blah\node_modules\express\node_modules\connect\node_modules\raw-body\index.js:109:7)
at IncomingMessage.g (events.js:180:16)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at _stream_readable.js:920:16
at process._tickCallback (node.js:415:13)
update 2
в файле connect/lib/middleware/json.js
эта строка, по-видимому, вызывает проблемы
req.body = JSON.parse(buf, options.reviver);
обновление 3
Я действительно думаю, что это мой cURL
buf= JSON.stringify({test: 'This'});
console.log(buf)
req.body = JSON.parse(buf, options.reviver);
работает журнал регистрации { "Тест": "this"}
а затем в моем обработчике:
----------------------
{ test: 'this' }
----------------------