Rails HTTP - POST

Rails HTTP - POST

我正在发送 HTTP POST 请求:

data = { id: 1, name: 'ABC' }

uri = URI.parse('http://localhost:3000/events')
http = Net::HTTP.new(uri.host, uri.port)
http.post(uri, data.to_json)

我的路线文件:

Rails.application.routes.draw do
  post '/events' => 'receiver#create'
end

而创建方法看起来像:

def create
 package = {
  id: ,
  name: 
 }
end

如何访问通过请求传递的数据值?我的目标是在 create 方法

中将其分配给新哈希

您还应该在请求中设置 Content-Type header:

http.post(uri, data.to_json, {"Content-Type" => "application/json", "Accept" => "application/json"})

然后您可以在您的控制器中使用 params[:id]params[:data]

def create
  @package = {id: params.require(:id), data: params.require(:data)}
  head :no_content
end

head :no_content 将呈现空回复(因此您可以稍后创建视图)。 params.require 将确保提供您的参数(否则控制器将 return 400 Bad Request 响应)——这样您以后就不会收到一些奇怪的 undefined method ... of nil 错误,以防您错过了参数请求。