2017-10-08 4 views
3

Je suis un développeur de Ruby essayant d'entrer dans elixir. J'essaie d'interagir avec une API afin d'apprendre un peu d'Elixir. Essentiellement, j'essaie de faire une requête http. En ruby, la chose que j'essaie de faire ressemblerait à ceci.Faire une requête HTTP avec Elixir et Phoenix

require 'httparty' 


url = "https://api.sportradar.us/nba/trial/v4/en/games/2016/11/05/schedule.json?api_key={api_key}" 
response = HTTParty.get(url) 
req = response.parsed_response 

Assez simple et direct. Maintenant, j'ai une réponse décodée par JSON que je peux afficher les données sur l'écran. Comment puis-je faire cela avec Elixir et Phoenix?

+0

Avez-vous essayé de chercher une bibliothèque? https://github.com/edgurgel/httpoison est le plus populaire. Avec cela, 'HTTPoison.get (url)' devrait récupérer les données. – Dogbert

+0

Oui, je viens de trouver ça. Cela semble très bien. – Bitwise

Répondre

5

Avec httpoison (client HTTP) et poison paquets (JSON codeur/décodeur), ce qui est presque aussi simple que votre code qui utilise HTTParty:

url = "https://api.sportradar.us/nba/trial/v4/en/games/2016/11/05/schedule.json?api_key=#{api_key}" 

response = HTTPoison.get!(url) 
req = Poison.decode!(response.body) 
3

Non seulement pouvez-vous écrire votre code aussi simplement qu'avant comme indiqué dans @Dogbert's example, mais vous pouvez faire des choses cool avec correspondance de motif, aussi (et être aussi granulaire que vous le souhaitez)

en utilisant HTTPoison et Poison, ainsi:

url = "https://api.sportradar.us/nba/trial/v4/en/games/2016/11/05/schedule.json?api_key={api_key}" 

case HTTPoison.get(url) do 
    {:ok, %{status_code: 200, body: body}} -> 
    Poison.decode!(body) 

    {:ok, %{status_code: 404}} -> 
    # do something with a 404 

    {:error, %{reason: reason}} -> 
    # do something with an error 
end