在Phoenix端点中的REST调用后返回JSON

在Phoenix端点中的REST调用后返回JSON,json,elixir,phoenix-framework,httpoison,Json,Elixir,Phoenix Framework,Httpoison,我正在学习Elixir和Phoenix,我正在构建一个需要查询Github API的辅助项目 这是执行调用的模块 defmodule Github do use HTTPoison.Base def process_url(url) do "https://api.github.com/" <> url end def process_response_body(body) do body |> Poison.decode!

我正在学习Elixir和Phoenix,我正在构建一个需要查询Github API的辅助项目

这是执行调用的模块

defmodule Github do

  use HTTPoison.Base

  def process_url(url) do
    "https://api.github.com/" <> url
  end

  def process_response_body(body) do
    body
    |> Poison.decode!
    |> Enum.map(fn({k, v}) -> {String.to_atom(k), v} end)

  end

end
我从凤凰城得到一个错误页面,上面写着

无法对值进行编码:{:总计数,2389278}

所以有些事情是可行的,我实际上调用了Github的API,但由于某些原因,我遗漏了一个步骤,我在这里遵循了这个示例


非常感谢任何帮助/提示

不确定您期望的结果是什么,但我假设您只想从控制器返回来自Github的完整响应作为JSON。只需让毒药处理解码,无需进一步处理

def process_response_body(body) do
  body
  |> Poison.decode!
end
你丢失的部分是得到的事实!不返回JSON,但返回%HTTPoison.Response结构,如第一个使用示例所示

结构包含已处理的正文、标题和状态代码。您可以使用模式匹配提取json并返回:

def search_repositories() do
  url = "search/repositories?q=language:javascript&sort=stars&order=desc"
  %HTTPoison.Response{:body => json, :headers => headers, :status_code => code} = Github.get! url
  IO.inspect headers
  IO.inspect code
  json
end

不确定您的预期结果是什么,但我假设您只想从控制器返回来自Github的完整响应作为JSON。只需让毒药处理解码,无需进一步处理

def process_response_body(body) do
  body
  |> Poison.decode!
end
你丢失的部分是得到的事实!不返回JSON,但返回%HTTPoison.Response结构,如第一个使用示例所示

结构包含已处理的正文、标题和状态代码。您可以使用模式匹配提取json并返回:

def search_repositories() do
  url = "search/repositories?q=language:javascript&sort=stars&order=desc"
  %HTTPoison.Response{:body => json, :headers => headers, :status_code => code} = Github.get! url
  IO.inspect headers
  IO.inspect code
  json
end