使用Elixir / Phoenix调用API端点

时间:2017-10-08 01:16:57

标签: elixir phoenix-framework

我对sportradar API进行了试用。我真的不关心运动,但我正在努力学习凤凰和Elixir。我正在尝试做一些超级基本的东西,但似乎无法实现。基本上,我正在尝试使用给定的参数建立一个URL并调用API端点。获取响应并使用返回的内容填充视图。这就是我遇到的问题。

CONTROLLER

def index(conn, _params) do
  render(conn, "index.html")
end

def find_games(conn, params) do
  response = params["find_games"]["calender"]


end

我现在基本上试着说https://api.sportradar.us/nba/trial/v4/en/games/response["day]/response["month"]/response["year"]/schedule.json?api_key={api_key}

如何使用Elixir和Phoenix发出http请求?

2 个答案:

答案 0 :(得分:2)

使用HTTPoison.get的示例:

%{
  "day" => day,
  "month" => month,
  "year" => year
} = response

url = "https://api.sportradar.us/nba/trial/v4/en/games/#{day}/#{month}/#{year}/schedule.json"
headers = []
params = [api_key: api_key]

{:ok, response} <- HTTPoison.get(url, headers, params: params)
Poison.decode(response.body)

答案 1 :(得分:1)

您可能更容易让它在凤凰城以外的地方工作和理解它。正如Mike指出的那样,HTTPoison是用于该任务的标准库。

要做到这一点,你需要......

  1. 在混合文件中添加HTTPoison作为依赖项
  2. 运行mix deps.get
  3. 从项目内部调用
  4. 解析响应,可能使用像Poison
  5. 这样的JSON解码库

    此处有一段视频,它会引导您完成putting HTTPoison into an empty project,从iex交互式shell进行API调用(并解码响应),然后从项目内部(这是一个OTP应用程序)如果你愿意,可以投入你的凤凰应用程序。)