Pular para o conteúdo
Skillpedia
APIs e servidores (backend)41 mil · #4800

fastapi-templates

Cria projetos FastAPI prontos para produção com boas práticas. Ajuda a construir APIs de backend de forma rápida e eficiente.

O que ela faz

Este modelo cria a estrutura básica para um projeto de API usando FastAPI. Ele já vem com boas práticas de programação, como lidar com erros e organizar o código, para que você não precise começar do zero.

Quando usar

  • ✓Ao iniciar um novo projeto de API com FastAPI.
  • ✓Quando você quer uma base sólida para um serviço web rápido.
  • ✓Para criar APIs que precisam responder rapidamente e lidar com muitas tarefas ao mesmo tempo.

Exemplo do que pedir para a IA

“Crie um projeto FastAPI para gerenciar usuários e itens, com banco de dados PostgreSQL.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/wshobson/agents/blob/main/plugins/api-scaffolding/skills/fastapi-templates/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/wshobson/agents/blob/main/plugins/api-scaffolding/skills/fastapi-templates/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

Ele organiza o código em pastas lógicas (como 'api', 'models', 'services') e usa padrões de programação modernos para tornar o código mais eficiente e fácil de manter.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add wshobson/agents --skill fastapi-templates

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/wshobson/agents/main/plugins/api-scaffolding/skills/fastapi-templates/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Modelos de Projeto FastAPI

Estruturas de projeto FastAPI prontas para produção com padrões assíncronos, injeção de dependência, middleware e melhores práticas para construir APIs de alta performance.

Quando Usar Esta Habilidade

  • Iniciando novos projetos FastAPI do zero
  • Implementando APIs REST assíncronas com Python
  • Construindo serviços web e microsserviços de alta performance
  • Criando aplicações assíncronas com PostgreSQL, MongoDB
  • Configurando projetos de API com estrutura e testes adequados

Conceitos Principais

1. Estrutura do Projeto

Layout Recomendado:

app/
├── api/                    # API routes
│   ├── v1/
│   │   ├── endpoints/
│   │   │   ├── users.py
│   │   │   ├── auth.py
│   │   │   └── items.py
│   │   └── router.py
│   └── dependencies.py     # Shared dependencies
├── core/                   # Core configuration
│   ├── config.py
│   ├── security.py
│   └── database.py
├── models/                 # Database models
│   ├── user.py
│   └── item.py
├── schemas/                # Pydantic schemas
│   ├── user.py
│   └── item.py
├── services/               # Business logic
│   ├── user_service.py
│   └── auth_service.py
├── repositories/           # Data access
│   ├── user_repository.py
│   └── item_repository.py
└── main.py                 # Application entry

2. Injeção de Dependência

O sistema de DI integrado do FastAPI usando Depends:

  • Gerenciamento de sessão de banco de dados
  • Autenticação/autorização
  • Lógica de negócios compartilhada
  • Injeção de configuração

3. Padrões Assíncronos

Uso adequado de async/await:

  • Manipuladores de rota assíncronos
  • Operações de banco de dados assíncronas
  • Tarefas em segundo plano assíncronas
  • Middleware assíncrono

4. Dependências

Os pacotes que os exemplos importam:

# requirements.txt
fastapi
uvicorn[standard]
pydantic-settings
sqlalchemy[asyncio]>=2.0  # DeclarativeBase; [asyncio] installs greenlet for the async engine
asyncpg                   # PostgreSQL driver: postgresql+asyncpg://...
PyJWT
pwdlib[argon2]
python-multipart          # only for a login route that uses OAuth2PasswordRequestForm

# requirements-dev.txt
pytest
pytest-asyncio
httpx
aiosqlite                 # test database: sqlite+aiosqlite:///:memory:

Exemplos Detalhados e Padrões

Seções detalhadas (começando com ## Implementation Patterns) estão em references/details.md. Leia esse arquivo quando o resumo de navegação acima for insuficiente.

Testes

# tests/conftest.py
import pytest_asyncio
from httpx import ASGITransport, AsyncClient
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
from sqlalchemy.orm import sessionmaker

from app.main import app
from app.core.database import get_db, Base

TEST_DATABASE_URL = "sqlite+aiosqlite:///:memory:"

# Async fixtures need pytest_asyncio.fixture in pytest-asyncio's default strict mode
@pytest_asyncio.fixture
async def db_session():
    engine = create_async_engine(TEST_DATABASE_URL, echo=True)
    async with engine.begin() as conn:
        await conn.run_sync(Base.metadata.create_all)

    AsyncSessionLocal = sessionmaker(
        engine, class_=AsyncSession, expire_on_commit=False
    )

    async with AsyncSessionLocal() as session:
        yield session
    await engine.dispose()

@pytest_asyncio.fixture
async def client(db_session):
    async def override_get_db():
        yield db_session

    app.dependency_overrides[get_db] = override_get_db

    # httpx 0.28 removed AsyncClient(app=...); use an ASGI transport
    transport = ASGITransport(app=app)
    async with AsyncClient(transport=transport, base_url="http://test") as client:
        yield client
    app.dependency_overrides.clear()

# tests/test_users.py
import pytest

@pytest.mark.asyncio
async def test_create_user(client):
    response = await client.post(
        "/api/v1/users/",
        json={
            "email": "test@example.com",
            "password": "testpass123",
            "name": "Test User"
        }
    )
    assert response.status_code == 201
    data = response.json()
    assert data["email"] == "test@example.com"
    assert "id" in data
Perguntas frequentes

O que é FastAPI?

FastAPI é um framework moderno para criar APIs (interfaces de programação de aplicativos) em Python, conhecido por sua velocidade e facilidade de uso.

O que é 'async patterns'?

São técnicas de programação que permitem que seu programa faça várias coisas ao mesmo tempo sem travar, como esperar por uma resposta de banco de dados enquanto processa outra solicitação.

O que é 'dependency injection'?

É uma forma de organizar o código onde partes do programa recebem as ferramentas (dependências) que precisam para funcionar, em vez de terem que criá-las sozinhas. Isso torna o código mais flexível e fácil de testar.

Detalhes

Descrição original do autor

Create production-ready FastAPI projects with async patterns, dependency injection, and comprehensive error handling. Use when building new FastAPI applications or setting up backend API projects.

repo: wshobson/agents

Popularidade

Estrelas no GitHub
41 mil
Posição no ranking
#4800
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas