У меня есть следующий клиент API в нашем приложении phoenix.
defmodule SomeService do
use HTTPoison.Base
def process_request_url(url) do
Application.get_env(:my_app, :some_service)[:host] <> url
end
def process_response_body(body) do
if String.trim(body) != "" do
body
|> Poison.decode! # this could fail if the response is html
|> Enum.map(fn({k, v}) -> {String.to_atom(k), v} end)
|> Enum.into(%{})
else
body
end
end
def get_some_data(customer_id, access_token) do
path = "/customer/#{customer_id}/"
headers = [{"Authorization", "Bearer #{access_token}"}]
case get(path, headers) do
{:ok, %HTTPoison.Response{body: body}} ->
{:ok, body}
{:error, error} -> {:error, error}
_ -> {:error, "unknown error from upstream system"}
end
end
end
Как лучше всего отслеживать исходящие вызовы API?
- то есть путь запроса, ответ, time_taken и т. д.
мы используем телеметрию для мониторинга входящих запросов и запросов ECTO. Однако HTTPoison, похоже, не предоставляет события телеметрии из коробки, как мы можем использовать телеметрию для достижения этого?