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
错误,以防您错过了参数请求。
我正在发送 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
错误,以防您错过了参数请求。