Slide 1

Slide 1 text

Criando uma API async com rate limit e testável Ana Paula Mendes

Slide 2

Slide 2 text

Ana Paula Mendes ● Engenheira de Software Sênior no Jusbrasil ● Mestranda em Computação Inteligente na UFPI

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

● 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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

● Clonando o projeto: git clone ● Para criar uma branch: git checkout -b origin/ ● Para atualizar o repositório local: git pull —no-rebase ● Para adicionar arquivos a serem commitados: git add ● Para commitar: git commit -m "Mensagem" ● Para enviar os arquivos para o repositório remoto: git push origin Revisão de Git

Slide 7

Slide 7 text

● É 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

Slide 8

Slide 8 text

Modelagem ● Vamos criar dois Models: ○ User ○ Message ● O banco de dados é o sqlite ● Para manipular o banco, vamos utilizar sqlalchemy

Slide 9

Slide 9 text

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)

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

Testes ● Utilizamos o pytest ● Para rodar os testes utilizamos: pytest tests

Slide 12

Slide 12 text

12 Obrigada! anapaulamendes anapauladsmendes ananoterminal https://anapaulamendes.github.io/