向Rails app发送Curl JSON POST请求

时间:2018-02-09 20:36:53

标签: ruby-on-rails json ruby curl

我是Rails的新手,我正在尝试在rails中创建一个引擎。关键是以这种格式{city: "Berlin", country: "Germany"}将JSON数据发送到应用程序并接收相同的JSON,但使用反向值,如{city: "nilreB"}等等。 我的路线是:

Rails.application.routes.draw do
  post "collect/data" => 'data#create'
end

我的控制器是:

class DataController < ApplicationController
  def create
    render text: "#{request.body}"
  end
end

我知道控制器根本没有完成,但我想知道为什么我在发出POST请求时遇到HTTP错误:

curl -v -d '{"key1":"value1", "key2":"value2"}' http://0.0.0.0:3000/collect/data --header "Accept: application/json" --header "Content-Type: application/json"
  

HTTP / 1.1 204无内容

我已经读过使用Rails 5时很好,我正在使用它。所以我的问题是我在控制器或其他地方遗漏了什么?我将非常感谢任何帮助。

这些是日志:

INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Started POST "/collect/data" for 127.0.0.1 at 2018-02-09 20:26:49 +0000
INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Processing by DataController#create as JSON
INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Parameters: {"key1"=>"value1", "key2"=>"value2", "datum"=>{"key1"=>"value1", "key2"=>"value2"}}
INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] No template found for DataController#create, rendering head :no_content
INFO -- : [df2105a8-e2c5-4e27-a9c7-ffc91c8b92e8] Completed 204 No Content in 1ms

1 个答案:

答案 0 :(得分:0)

由于@ma_il说我的参数在DataController中可以作为params[:datum]使用,我在Rails 5.1中搜索了更多关于params的信息,我正在使用它并发现我的完整版本是:

def create
  my_hash = params[:datum].permit!
  render json: my_hash.to_h.collect { |keys, values| "#{keys}{values.reverse}" }
end