Node.js对Rails 3服务器的PUT或POST请求

时间:2012-08-17 20:10:14

标签: ruby-on-rails node.js

我试图从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请求?

1 个答案:

答案 0 :(得分:1)

querystring模块会将您的数据序列化为参数编码形式。默认情况下,rails需要一个JSON序列化实体。您应该使用JSON.stringify代替qs.stringify将您的用户序列化到请求正文中。或者,您可以明确指定application/x-www-form-urlencoded的内容类型标题,以告知您要发送的正文的类型。