如何将HTTP发布请求发送到Rails应用以获得json响应

问题描述

|| 对于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