Mat*_*ure 24 javascript json node.js express
我今晚正在使用Node.JS和Restify开发一个简单的API,并且在通过接收参数方面做得很好req.params.fieldname.我安装了CouchDB和Cradle以便开始尝试将这些参数放入数据库中,但是在安装完所有内容后,req.params开始变空了!
我应该一直使用Express开始出于其他原因,所以我尝试切换到那个,看看我是否可以让它工作,但没有这样的运气.
var express = require('express');
var app = express.createServer();
app.configure(function(){
app.use(express.bodyParser());
app.use(express.cookieParser());
});
app.post('/', function(req, res){
res.send(req.body);
});
app.listen(8080, function() {
console.log('Printomatic listening at', app.url);
});
Run Code Online (Sandbox Code Playgroud)
我已经尝试了无数的变化,但无论什么需求,人体都会空着.我正在使用http-console进行测试,并发送POST /与内容一样简单的内容{"name":"foobar"}
我很沮丧,此时我开始怀疑在安装Cradle/CouchDB(分别安装了NPM和Homebrew)时是否破坏了某些东西.任何帮助将不胜感激,因为这有点时间敏感.在此先感谢您的帮助!
Lin*_*iel 72
你提到你发布了JSON数据({"name": "foobar"}).确保您Content-Type: application/json使用它发送,或者bodyParser不会解析它.
例如:
$ curl -d 'user[name]=tj' http://local/
$ curl -d '{"user":{"name":"tj"}}' -H "Content-Type: application/json" http://local/
Run Code Online (Sandbox Code Playgroud)
这是因为bodyParser解析application/json,application/x-www-form-encoded并且multipart/form-data它根据选择使用哪个解析器Content-Type.