问题描述
||
对于GET请求,其:
response = Typhoeus::Request.get(\"http://localhost:3000/users/1.json?oauth_token=12\")
这完美地返回了Json的响应。
邮寄要求:-
response = Typhoeus::Request.post(\"http://localhost:3000/users/1.json?oauth_token=12\",:params => {\'[user][city]\' => params[:location]})
不管用...
这是返回路由错误。
更新:-
登录此api帖子后即可正常工作。
response = Typhoeus::Request.post(API_SERVER_ADDRESS + \"user_sessions.json\" + API_OAUTH_TOKEN,:params => {\'[user_session][email]\' => params[:email],\'[user_session][password]\' =>params[:password]})
在路线上
resources :users
并且Web http请求也可以正常工作。
更新
例如来自rails日志的http请求是:-
Parameters: {\"commit\"=>\"Update\",\"authenticity_token\"=>\"8nvzCd0GF9IxjMcTfHOMJTPnycVPNIENMoMff8w4qAI=\",\"utf8\"=>\"✓\",\"id\"=>\"1\",\"user\"=>{ \"city\"=>\"abc\"}}
现在我想发送同样的请求。
解决方法
:params参数应该是参数的哈希值,表示键值对,因此可能是这样的:
response = Typhoeus::Request.post(\"http://localhost:3000/users/1.json?oauth_token=12\",:params => {:user => \'u\',:city => \'c\',:location => \'l\'})
...或诸如此类-无论参数是什么,值是什么。我认为,您的原件并不会转化为您想要做的有意义的哈希。
另外,请检查您的路由,以确保正确路由您要执行的操作。
, 这是解决方案
由此
response = Typhoeus::Request.put(API_SERVER_ADDRESS + \"users/\" +user_id + \".json\",:params => {:oauth_token=>\'12\',:user=>{:city => params[:location]}})
, 确保在routes.rb
文件中声明了单独的POST
路线。即使URL相同,不同的HTTP方法也需要不同的路由。
默认情况下,使用resources :users
可以得到以下内容:
GET /users/new # new
POST /users # create
GET /users/:id # show
GET /users/:id/edit # edit
PUT /users/:id # update
DELETE /users/:id # destroy