我试图从Node.js向我的Rails 3服务器发出PUT和/或POST请求。我在身体中传递我的参数,但它们没有变成Rails控制器中的params哈希。我的代码如下:
http = require('http');
request = require('request');
qs = require('qs');
data = qs.stringify({name: 'Aaron', points: 10});
request_opts = {
uri: 'http://localhost:3000/users/update',
method: 'PUT',
body: data
}
request(request_opts, function() { console.log(arguments) });
我在我的Rails控制器中放了一个调试器,params为nil,但response.body.read
返回data
中的字符串。
如何从参数与Rails兼容的Node.js发出PUT / POST请求?
答案 0 :(得分:1)
querystring
模块会将您的数据序列化为参数编码形式。默认情况下,rails需要一个JSON序列化实体。您应该使用JSON.stringify
代替qs.stringify
将您的用户序列化到请求正文中。或者,您可以明确指定application/x-www-form-urlencoded
的内容类型标题,以告知您要发送的正文的类型。