FastAPI é um framework de:
Alta performance, Fácil de aprender, pronto para produção.
Moderno e rápido (alta performance) framework web para construção de APIS com
Python 3.6 ou superior, baseado nos type hints padrões do Python
O FastAPI tem seu lado assíncrono e síncrono.
Async: TEM QUE ESPERAR
Código assíncrono apenas significa que a linguagem tem um jeito de dizer para o
computador / programa que em certo ponto, ele terá que esperar por algo para
finalizar em outro lugar.
Vamos usar o sqlalchemy, que é uma ORM para lidarmos com banco de dados.
PROJETO 1:
__init__.py: ele é um arquivo padrão do python que serve para modularização de
pastas.
no if __name__ == "main":
o código: [Link]('main:app', host='[Link]', port=8000, log_level="info",
reload=True)
reload=True esse parâmetro caso a gente faça alguma alteração no nosso código não
precisamos parar o servidor para subir de novo, ele reinicia automaticamente.
O Makefile
ele é um facilitador para nos executarmos os nossos comandos
você coloca nele o comando que você quer que ele execute:
run:
@uvicorn workout_api.main:app --reload
e você executa o comando usando o:
make run
Criamos a pasta atleta (entidade) colocamos o __init__ que é necessário e criamos o
arquivo [Link]
o [Link] serve para a gente fazer as validações e também serializar os dados.
os dados que a gente quer que aparece no JSON, eles passam pelos schemas
toda classe de schema quando voce usa pydentic, voce tem que importar o basemodel.
O Annotated do pydantic nos ajuda a tipar os dados
ELE RECEBE A TIPAGEM PRIMEIRO, DEPOIS O RETORNO DELE, EXEMPLO:
nome: Annotated[str, Field()]
Ele nos ajuda a detalhar melhor os nossos campos.
Existem ainda possibilidades de fazermos validator em cima de campos. Exemplo em
CPF.
Tem uma tipagem do pydantic chamada positive float. ele não aceita um numero menor
que 0.
vamos criar nossa models.
vamos pesquisar por declarative base do sqlalchemy: pesquise por:
declarative base sqlalchemy
[Link]
[Link]
NA BASEMODEL NOS COLOCAMOS UM CAMPO PADRÃO QUE VAI TER EM TODAS!
exp: id
USAMOS O Mapped
Todos vao herdar de models.
Vamos colocar isso em nossa pasta contrib, que é onde vamos guardar nossas coisas
mais genéricas.
O BaseModel tem um recurso chamado __tablename__ que é o nome da tabela que vai ser
chamado no banco de dados.
Fizemos um BaseModel para Models, mas, vamos fazer para schemas também!
Podemos criar as entidades com FastAPI da seguinte forma:
1 - cria a pasta com o nome da entidade
2 - cria o __init__.py
3 - cria o [Link]
4 - cria o [Link]
como criar o relacionamento usando fastapi com sqlalchemy?
nome_tabela: Mapped['tabelaModel'l = relationship(back_populates='tabela2')
nome_tabela_id: Mapped[int] = mapped_column(ForeignKey('tabela2.pk_id'))