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