2016-06-26 24 views
1

你好,我想创建和问题张贴到管理平台API药剂:如何张贴在休息API(管理平台)与httpotion

def createIssue(issue) do 
    value = %{"project_id" => 1, "subject" => "Example", "priority_id" => 1, "tracker_id" => 1} 
    content = Poison.Encoder.encode(value, []) 
    HTTPotion.post("#{url}/issues.json", [body: "issue=#{content}" , basic_auth: auth()]) 
end 

上面的代码的结果如下

Started POST "/issues.json" for 127.0.0.1 at 2016-06-26 11:47:25 +0200 
Processing by IssuesController#create as JSON 
Parameters: {"issue"=>"{\"tracker_id\":1,\"subject\":\"Example\",\"project_id\":1,\"priority_id\":1}"} 
Current user: admin (id=1) 

从管理平台正确的反应应该是,据我可以了解以下

Parameters: {"issue"=>{"tracker_id":1,"subject": "Example","project_id":1,"priority_id":1}} 

任何人都可以帮助吗? 谢谢

+0

你之前是否从另一种语言调用了此API?如果是,你使用了什么代码? – Dogbert

+0

尝试在'mix.exs'中添加'plug'作为依赖项,如果您还没有,请尝试下面的代码:https://gist.github.com/anonymous/e532956e00c9630b823fe4434cbe9dec我将发布解释为回答它是否适合你。 – Dogbert

+0

谢谢你,Dogbert。我试图通过引用/不引用来做类似的事情。你的要点确实奏效!我会在您的github存储库中记录您的信息,并在发布时将您的解释标记为答案。谢谢 –

回答

2

问题不是HTTPotion。您没有将“问题”节点编码为JSON。

def createIssue(issue) do 
    content = Poison.encode!(%{"issue" => %{"project_id" => 1, "subject" => "Example", "priority_id" => 1, "tracker_id" => 1}}) 
    HTTPotion.post("#{url}/issues.json", [body: content, basic_auth: auth()]) 
end 
+0

如果这样可行,我觉得奇怪的是''issue =#{json}“'解码为'{”issue“:json}''。它应该抛出一个错误或其他东西,如果它期望整个身体是有效的JSON。 – Dogbert

+0

@Dogbert:它不会抛出错误 –

+0

我的Elixir代码可以在这里找到[link](https://github.com/wuatanabe/redelix) –