⚗️
Consumindo APIs com Elixir
  • Introdução
  • Sobre o autor
  • O valor desse livro
  • Introdução
    • Por que elixir?
    • Como ler este livro
    • Sobre o conteúdo do livro
  • Configurando ambiente
    • Instalando o Elixir
    • Criando um projeto
  • Construindo um cliente usando Tesla
    • Iniciando
    • Tesla
      • O que é o Tesla
      • Instalando Tesla
    • Criando o Client
    • Estruturando resposta
    • Estratégia de teste para requisições
    • Instalando Bypass
    • Mockando requisições do cliente com Bypass
    • Tratando dados da resposta
  • Problemas de API externa
    • Erro genérico
    • O que é o rate limit
    • Rate Limite de curta duração
      • Reexecutando uma requisição
    • Rate Limit de longa duração
      • Agendando uma nova tentativa de requisição
      • Configurações necessárias
      • Adicionando Ecto ao projeto
      • O que é o Oban
      • Instalando Oban
      • Criando uma requisição assíncrona
      • Configurando quantidade de tentativas no Oban
  • Compondo integrações
    • Level up
    • Marvel API
      • Criando uma conta
      • Lendo o endpoint de Comics
      • Criando o cliente da Marvel
        • Melhorando a segurança
      • Lidando com a resposta
    • Aproveitando ao máximo o Rate Limit
  • Em breve
    • WIP - Supervisor
    • WIP - OAuth
    • WIP - Cacheando requisições
Fornecido por GitBook
Nesta página
  • Suporte árvore de supervisão
  • Adicionando árvore de supervisão

Isto foi útil?

  1. Problemas de API externa
  2. Rate Limit de longa duração

Configurações necessárias

AnteriorAgendando uma nova tentativa de requisiçãoPróximoAdicionando Ecto ao projeto

Atualizado há 11 meses

Isto foi útil?

Você precisará instalar o banco de dados Postgress. Pode ser via terminal ou via docker. O importante é termos ele. Existem diversos tutoriais na internet sobre, então não vou repetir aqui.

Depois disso, precisamos configurar ele em nossa aplicação, e para isso utilizarei um wrapper de banco de dados. O famoso .

Mas antes disso, precisamos atualizar nosso app para ter suporte a árvore de supervisão.

Suporte árvore de supervisão

Ecto trabalha como um wrapper de banco de dados. Isso quer dizer que podemos fazer queries com ele utilizando uma linguagem mais clara. Um detalhes importante, o Ecto deve ser rodado como um supervisor. Isso quer dizer, nossa aplicação deve ter suporte a uma . Talvez você esteja acostumado com essa nomenclatura, infelizmente não tenho espaço no livro para falar sobre isso aqui. Deixei um link para você se aprofundar no estudo. Nós aqui, seguiremos no projeto.

Nossa aplicação não possui uma árvore de supervisão. O primeiro passo de configuração é transformar ela em uma. Caso queira pular essa etapa, você pode criar um novo projeto ja adicionando a flag para ser uma aplicação com a árvore.

mix new [nome-do-projeto] --sup

Utilizando a flag --sup o novo projeto automaticamente terá suporte. Mas eu farei a mudança na mão. Caso tenha usado a flag, você pode pular para a seção .

Adicionando árvore de supervisão

Vamos começar criando um módulo novo. Por convenção chamarei de Application:

lib/coffee_shop/application.ex
defmodule CoffeeShop.Application do
  use Application

  def start(_type, _args) do
    children = []
    opts = [strategy: :one_for_one, name: CoffeeShop.Supervisor]

    Supervisor.start_link(children, opts)
  end
end

Na linha 8 iniciamos o supervisor de nossa aplicação e passamos outros supervisores filhos. Adicionaremos depois o Ecto nesse pedaço.

Agora precisamos adicionar o supevisor de nossa aplicação ao nosso projeto. Vamos até o mix.exs e adicionar uma nova opção mod na função application/0 passando o módulo Application que criamos.

mix.exs
defmodule CoffeeShop.MixProject do
  use Mix.Project

  # ...
  
  def application do
    [
      extra_applications: [:logger],
      mod: {CoffeeShop.Application, []}
    ]
  end

  # ...
end

Como segundo item da tupla adicionaremos uma lista vazia. Esse valor sçao argumentos que podemos passar para dentro do processo. Não temos necessidade de fazer isso, então, continuará vazio.

Pronto, nosso projeto agora tem suporte a árvore de supervisão. Podemos seguir.

Ecto
árvore de supervisão
Adicionando Ecto ao projeto