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

Criando uma API async com rate limit e testável

Ana Paula Mendes
November 02, 2023
39

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

Ana Paula Mendes

November 02, 2023
Tweet

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