0% acharam este documento útil (0 voto)
2 visualizações5 páginas

Super Módulo - FastAPI

O documento fornece um guia passo a passo para rodar uma aplicação FastAPI no Visual Studio Code usando o servidor Uvicorn. Inclui instruções sobre como criar um arquivo main.py, instalar bibliotecas necessárias, executar o servidor e testar a API. Também aborda a criação de um banco de dados SQLite e a definição de modelos de dados usando Pydantic.

Enviado por

Jessica Priscila
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações5 páginas

Super Módulo - FastAPI

O documento fornece um guia passo a passo para rodar uma aplicação FastAPI no Visual Studio Code usando o servidor Uvicorn. Inclui instruções sobre como criar um arquivo main.py, instalar bibliotecas necessárias, executar o servidor e testar a API. Também aborda a criação de um banco de dados SQLite e a definição de modelos de dados usando Pydantic.

Enviado por

Jessica Priscila
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato DOCX, PDF, TXT ou leia on-line no Scribd

Essa é uma ótima pergunta!

Para rodar o FastAPI no Visual Studio Code (VS Code), você


não digita o código diretamente no editor para executá-lo. Em vez disso, você usa o
Terminal do VS Code para chamar um servidor chamado Uvicorn, que é quem executa
sua aplicação FastAPI.

Aqui está o passo a passo completo, do código à execução no terminal.

1. O Código Básico do FastAPI


Crie um novo arquivo no VS Code e salve-o como [Link]. Este é o código mínimo que
você precisa:

Python

# [Link]

from fastapi import FastAPI

# 1. Cria a instância do FastAPI. É o ponto principal da sua aplicação.


app = FastAPI()

# 2. Define uma Rota (Endpoint) usando um 'decorador'


@[Link]("/")
def ler_raiz():
# 3. Retorna um dicionário Python, que o FastAPI converte automaticamente para JSON
return {"mensagem": "Olá, FastAPI! Sua primeira API está no ar."}

2. Comandos no Terminal (Como Rodar)


Antes de rodar, certifique-se de ter o FastAPI e o Uvicorn instalados.
1. Abra o Terminal no VS Code: Vá em Terminal > New Terminal (ou use o atalho
Ctrl + ').
2. Instale as Bibliotecas: Digite e execute o seguinte comando:
3. Bash

pip install "fastapi[all]" uvicorn


4.
5. (O fastapi[all] instala o FastAPI com todas as dependências recomendadas, e o
uvicorn é o servidor.)
6. Execute o Servidor Uvicorn: Digite o comando abaixo no terminal:
7. Bash

uvicorn main:app --reload


8.
9.

O que o comando uvicorn faz?


● uvicorn: É o nome do servidor ASGI (o programa que executa a aplicação web).
● main:app: Indica ao Uvicorn onde encontrar sua aplicação:
○ main: O nome do arquivo Python (o [Link]).
○ app: O nome da variável onde você criou a instância do FastAPI (a linha app
= FastAPI()).
● --reload: É um parâmetro crucial para o desenvolvimento. Ele faz com que o
servidor reinicie automaticamente toda vez que você salvar uma alteração no seu
código-fonte, sem que você precise parar e iniciar manualmente.

3. Verificando o Resultado
Quando o Uvicorn começar a rodar, você verá uma mensagem no terminal semelhante a
esta:

INFO: Uvicorn running on [Link] (Press CTRL+C to quit)


INFO: Started reloader process [PID] using WatchFiles
INFO: Started server process [PID]
INFO: Waiting for application startup.
INFO: Application startup complete.

Para testar sua API:


1. Abra o navegador: Clique ou cole a URL [Link] ou
[Link] no seu navegador. Você verá a mensagem em formato JSON:
2. JSON

{"mensagem": "Olá, FastAPI! Sua primeira API está no ar."}


3.
4.
5. Documentação Automática: Acesse [Link] para ver a
documentação interativa automática (Swagger UI) que o FastAPI gera!

===================================================================

from fastapi import FastAPI


from pydantic import BaseModel

list_users = []

app = FastAPI()

# schema ou DTO objeto de transferencia de dados

class UsuarioIn(BaseModel):
nome:str
email:str
senha:str

class UsuarioOut(BaseModel):
nome:str
email:str
@[Link]("/users")
async def adicionar_novo_usuario(usuario:UsuarioIn) -> UsuarioOut:
list_users.append(usuario)
return usuario

@[Link]("/users")
async def pegar_todos_os_usuarios() -> list[UsuarioOut]:
print(list_users)
return list_users
=========================================================

[Link]

from fastapi import FastAPI,Depends


from schemas import UsuarioIn,UsuarioOut
from db import UsuarioDB,pegar_session,Session,executar_funcao

executar_funcao()

app = FastAPI()
# schema ou DTO objeto de transferencia de dados

@[Link]("/users")
async def adicionar_novo_usuario(
usuario:UsuarioIn,
db:Session=Depends(pegar_session)
):
usuario_db = UsuarioDB(
nome=[Link],
email=[Link],
senha=[Link]
)
# usuario_db = UsuarioDB(**usuario.model_dump())# mesma coisa da linha de cima
[Link](usuario_db)
[Link]()
[Link](usuario_db)
return usuario_db

# @[Link]("/users")
# async def pegar_todos_os_usuarios() -> list[UsuarioOut]:
# # print(list_users)
# # return list_users

============================================================
[Link]

from [Link] import Session,declarative_base,sessionmaker


from sqlalchemy import create_engine,Column,Integer,String

# o carro que trafega nela


engine = create_engine(
url="sqlite:///./[Link]"
)
# A rodovia
SessionLocal = sessionmaker(bind=engine)

Base = declarative_base()

def pegar_session():
try:
db = SessionLocal()
yield db
finally:
[Link]()

class UsuarioDB(Base):
__tablename__ = "users"
id = Column(Integer,primary_key=True,autoincrement=True)
nome = Column(String)
email = Column(String)
senha = Column(String)

def executar_funcao():
print(__name__)

if __name__ == "__main__":
executar_funcao()
[Link].create_all(bind=engine)

================================================================

[Link]

from pydantic import BaseModel

class UsuarioIn(BaseModel):
nome:str
email:str
senha:str
class UsuarioOut(BaseModel):
nome:str
email:str

class Config:
orm_mode = True

Você também pode gostar