2016-07-08 10 views
0

私はElixirとPhoenixを勉強しています.GithubのAPIを照会する必要があるサイドプロジェクトを構築しています。フェニックスのエンドポイントでREST呼び出し後のJSONを返します

これは、コール

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 

を実行し、これは私がエラーページを取得

defmodule MyApp.GithubController do 

    use MyApp.Web, :controller 
    require Github 

    def search(conn, _params) do 
    json conn, search_repositories 
    end 

    def search_repositories() do 

    url = "search/repositories?q=language:javascript&sort=stars&order=desc" 
    Github.get! url 
    end 

end 

を "/ API/githubの/検索" でGETへの回答コントローラであるモジュールですトップ

値を符号化することができないで言うフェニックスから:{:TOTAL_COUNT、2389278}

だから、何かが働いている、私は実際のGithubのAPIを呼び出していますが、何らかの理由で、私はステップを欠けている、私はここでの例を踏襲してきましたhttps://github.com/edgurgel/httpoison#wrapping-httpoisonbase

すべてのヘルプ/ヒントが高く評価されます!

答えて

2

予想される結果がわかりませんが、コントローラからGithubの完全な応答をJSONとして戻したいと思っています。 Poisonにデコードを処理させ、それをさらに処理する必要はありません。

def process_response_body(body) do 
    body 
    |> Poison.decode! 
end 

あなたの欠けている部分は、実際に取得することです! JSONを返しませんが、最初の使用例のように%HTTPoison.Response構造体を返します。https://github.com/edgurgel/httpoison

構造体には、処理されたボディ、ヘッダー、およびステータスコードが含まれています。パターンマッチングを使用して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 
関連する問題