2016-06-26 2 views
1

비약 : httpotion와 휴식 API (레드 마인)에 게시하는 방법

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) 
을 따르고 내가 만들려고하고 있고 문제가 API를

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 

위 코드의 결과를 레드 마인을 게시 안녕하세요

레드 마인에서 오른쪽 응답은 지금까지 나는 다음과 같은

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

도버트 감사합니다. 따옴표/인용 부호를 사용하여 유사한 작업을 수행하려고했습니다. 너의 요지가 일 했어! 내 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

@ 도버트 : 오류가 발생하지 않습니다 –

+0

내 엘니셔 코드는 여기에서 찾을 수 있습니다. [link] (https://github.com/wuatanabe/redelix) –