Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Criando uma API async com rate limit e testável

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Ana Paula Mendes Ana Paula Mendes
November 02, 2023
61

Criando uma API async com rate limit e testável

O objetivo é a construção de uma API assíncrona utilizando o framework FastAPI, o asgi-ratelimit, cliente de testes e pytest para construir uma API funcional.

- Introdução
- Revisão de Git
- Configurando o projeto inicial
- Modelagem
- Roteamento
- Rate-limit
- Testes

Avatar for Ana Paula Mendes

Ana Paula Mendes

November 02, 2023
Tweet

More Decks by Ana Paula Mendes

Transcript

  1. Ana Paula Mendes • Engenheira de Software Sênior no Jusbrasil

    • Mestranda em Computação Inteligente na UFPI
  2. O objetivo é a construção de uma API assíncrona utilizando

    o framework FastAPI, o asgi-ratelimit, cliente de testes e pytest para construir uma API funcional. • Introdução • Revisão de Git • Configurando o projeto inicial • Modelagem • Roteamento • Rate-limit • Testes Sumário
  3. • O tutorial é didático e iremos utilizar um cenário

    de uma API simples de mensagens; • Não teremos tantas validações por conta do tempo do tutorial, então alguns cenários não estão cobertos; • Aceito contribuições no repositório do projeto no Github; • A parte de banco de dados está toda pronta e não será coberta como parte do tutorial. Observações
  4. Uma API de envio de mensagens, cujas funcionalidades serão: •

    Criar um usuário • Listar os usuários • Ver os detalhes de um usuário • Enviar uma mensagem para um usuário • Listar mensagens • Ver os detalhes de uma mensagem • Responder mensagem • Encaminhar mensagem para um usuário • Apagar mensagem Introdução
  5. • Clonando o projeto: git clone <link_do_repositorio> • Para criar

    uma branch: git checkout -b <nome_da_branch> origin/<outra_branch> • Para atualizar o repositório local: git pull —no-rebase • Para adicionar arquivos a serem commitados: git add <nome_do_arquivo> • Para commitar: git commit -m "Mensagem" • Para enviar os arquivos para o repositório remoto: git push origin <nome_da_branch> Revisão de Git
  6. • É necessário ter a versão do Python 3.11, ou

    outra versão compatível. • Recomenda-se utilizar uma virtualenv do Python. • É necessário git para baixar o repositório inicial do projeto. • Para baixar o repositório inicial do projeto: • git clone https://github.com/anapaulamendes/tutorial-fastapi.git • O projeto inicial está na branch: setup • Para instalar os pacotes necessários: pip install -r requirements.txt Configurando o Projeto Inicial
  7. Modelagem • Vamos criar dois Models: ◦ User ◦ Message

    • O banco de dados é o sqlite • Para manipular o banco, vamos utilizar sqlalchemy
  8. Roteamento • Criar um usuário (POST) • Listar os usuários

    (GET) • Ver os detalhes de um usuário (GET) • Enviar uma mensagem para um usuário (POST) • Listar mensagens (GET) • Ver os detalhes de uma mensagem (GET) • Responder mensagem (PUT) • Encaminhar mensagem para um usuário (PUT) • Apagar mensagem (DELETE)
  9. Rate-limit • Vamos utilizar esse projeto: https://github.com/abersheeran/asgi-ratelimit • No pypi:

    https://pypi.org/project/asgi-ratelimit/ • Como no tutorial não temos a implementação de autenticação, vamos usar o Postman ou qualquer outra aplicação que faça requisição passando a chave valor no header: ◦ x-real-ip: 168.227.17.187