2017-10-08 30 views
3

我是一位尝试进入万灵药的Ruby开发者。我正在尝试与API进行交互以学习一点药剂。我基本上试图做一个HTTP请求。在红宝石里,我想要做的事情看起来像这样。用Elixir和Phoenix发出HTTP请求

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 

非常简单直接。现在我有一个json解码的响应,我可以在屏幕上显示数据。我该如何与Elixir和Phoenix做到这一点?

+0

您是否尝试过搜索库? https://github.com/edgurgel/httpoison是最流行的一个。这样,'HTTPoison.get(url)'应该获取数据。 – Dogbert

+0

是的,我刚刚发现。看起来不错。 – Bitwise

回答

5

随着httpoison(HTTP客户端)和poison(JSON编码器/解码器)包,这几乎是你的代码,它使用简单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

您不仅可以像以前那样编写代码的简单如图@Dogbert's example,但你可以做很酷的事情与模式匹配,太(要像你喜欢颗粒状)

使用HTTPoison和毒药,以及:

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