Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails POST参数为';在API请求时传递给控制器_Ruby On Rails_Macos_Rest_Curl - Fatal编程技术网

Ruby on rails POST参数为';在API请求时传递给控制器

Ruby on rails POST参数为';在API请求时传递给控制器,ruby-on-rails,macos,rest,curl,Ruby On Rails,Macos,Rest,Curl,当我在Rails 3应用程序中通过CURL发布到我的资源时,参数并不会一直传递到控制器 因此,当我发布{“favorite_user”:{“username”:“someuser”}时,我得到以下参数: {"format"=>:json, "action"=>"create", "controller"=>"v1/favorite_users"} 这是我的发帖请求: POST /api/favorite_users HTTP/1.1 User-Agent: curl/7.30

当我在Rails 3应用程序中通过CURL发布到我的资源时,参数并不会一直传递到控制器

因此,当我发布
{“favorite_user”:{“username”:“someuser”}
时,我得到以下参数:

{"format"=>:json, "action"=>"create", "controller"=>"v1/favorite_users"}
这是我的发帖请求:

POST /api/favorite_users HTTP/1.1
User-Agent: curl/7.30.0
Host: myapp.com
Content-Type: application/myapp.com; version=1
Accept: application/myapp.com; version=1
Content-Length: 48

{"favorite_user": {"username": "someuser"}}
My routes.rb:

scope 'api', as: 'api' do
  api_version(module: 'V1',
              header: {name: 'Accept', value: 'application/myapp.com; version=1'},
              defaults: {format: :json}) do
    resources :favorite_users, only: [:index, :show, :create]
  end
end
rake路由
产生以下结果:

api_favorite_users GET    /api/favorite_users(.:format)                                        V1/favorite_users#index {:format=>:json}
                   POST   /api/favorite_users(.:format)                                        V1/favorite_users#create {:format=>:json}
 api_favorite_user GET    /api/favorite_users/:id(.:format)                                    V1/favorite_users#show {:format=>:json}
我的控制器:

class V1::FavoriteUsersController < V1::BaseController

  # ...

  def create
    render text: params.to_s
  end

end
class V1::FavoriteUsersController
假设您正在使用版本管理器gem对API进行版本控制,您需要将
内容类型
标题更改为Rails能够理解的内容。您的数据是JSON,因此标题应该是
Content-Type:application/JSON
。版本管理员没有告诉Rails如何解释和解码带有自定义
内容类型的传入请求主体,它只查看
Accept
头值以查找匹配类型