2014-09-23 14 views
1

我想創建一個帖子來重新使用他們的API的問題。 他們說我應該使用這種格式。發佈請求顯示json密鑰重複和嵌套 - redmine和ruby

http://www.redmine.org/projects/redmine/wiki/Rest_api_with_ruby

這裏是我的代碼。

issue = Issue.new(
    :subject => 'Feedback', 
    :assigned_to_id => 1, 
    :project_id => 1, 
    :description => $description, 
    :custom_field_values => {"6" => "Thomas"}, 
) 

所有的字段都能正常工作,除了最後一個名爲:custom_field_values。當我運行該腳本

它不會添加自定義字段當我檢查服務器日誌發佈請求顯示custom_field_values作爲custom_field_values的關鍵,防止我從進口工作

這是服務器日誌

Parameters: {"issue"=>{"assigned_to_id"=>1, "custom_field_values"=> 
{"custom_field_values"=>{"6"=>"Thomas"}}, "description"=>"placeholder text", 
"project_id"=>1, "subject"=>" Feedback"}} 

當我通過redmine接口創建票據時,正確的JSON看起來像這樣。

Parameters: {"utf8"=>"✓", "issue"=>{"is_private"=>"0", "tracker_id"=>"4", 
"subject"=>"test", "description"=>"test", "status_id"=>"1", "priority_id"=>"4", 
"assigned_to_id"=>"", "custom_field_values"=>{"3"=>"Web", "4"=>["Search", ""], 
"5"=>"testeaf", "6"=>"sdfasdfadf", "7"=>"2014-09-30"}}, "commit"=>"Create", 
"project_id"=>"testproject"} 

任何人都可以幫助我看到爲什麼我得到與嵌套重複鍵? 同樣的事情發生,如果我組成一個隨機密鑰。

我使用Bitnami管理平臺2.5 紅寶石2.0 的Windows 7

需要 'RubyGems的' 需要 'active_resource' 需要 '袋鼠'

回答

0

應該custom_field_values,不custom_fields_values(奇異field)。

+0

謝謝指點出來。我在測試的某個地方犯了錯字。改變後我仍然看到鑰匙重複。 – AndraeRay 2014-09-23 17:02:19

0

我意識到自定義字段的active_resource中存在一些錯誤。所以不是用它來發送請求,而是決定使用NET :: HTTP直接發送我的post請求作爲json對象。

@user = 'admin' 
@pass = 'admin' 
@host = 'localhost' 
@port = '80' 

@payload ={ 
    "issue" => { 
    "project_id" => "test_project", 
    "subject"=> "test subject", 
    "priority_id"=> 4, 
    "tracker_id"=> 4, 
    "description" => "message", 
    "custom_fields"=> [ 
     {"value"=> name, "id"=> 6}, 
     {"value"=> date, "id"=> 7}, 
     {"value"=> email, "id"=> 5} 
    ] 
    } 
    }.to_json 

def post 
    req = Net::HTTP::Post.new(@post_ws, initheader = {'Content-Type' =>'application/json'}) 
      req.basic_auth @user, @pass 
      req.body = @payload 
      response = Net::HTTP.new(@host, @port).start {|http| http.request(req) } 
      puts "Response #{response.code} #{response.message}: 
      #{response.body}" 
     end 

thepost = post 

其次模式在這裏看到: https://www.socialtext.net/open/very_simple_rest_in_ruby_part_3_post_to_create_a_new_workspace

Ruby send JSON request