使用Elixir和Phoenix发出HTTP请求

Bit*_*ise 7 json http elixir phoenix-framework

我是一个试图进入长生不老药的Ruby开发者.我正在尝试与API交互以学习一点Elixir.我基本上是在尝试发出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
Run Code Online (Sandbox Code Playgroud)

非常简单明了.现在我有一个json解码响应,我可以在屏幕上显示数据.我怎么能用Elixir和Phoenix做到这一点?

Dog*_*ert 14

使用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)
Run Code Online (Sandbox Code Playgroud)


rya*_*ter 12

你不仅可以像以前一样简单地编写代码,如@ Dogbert的例子所示,但你也可以通过模式匹配来做很酷的事情(并且可以像你想的那样细化)

使用HTTPoison和Poison:

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
Run Code Online (Sandbox Code Playgroud)