Esta e a forma principal para subir a aplicacao.
- Construir e iniciar os containers:
docker compose up --build- Acessar a aplicacao:
- Home HTML: http://localhost:8000/
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
- Para parar os containers:
docker compose downNecessário ter o gerenciador de pacotes uv instalado. uv é a versão moderna e mais rápida do pip
Use esta opcao se preferir rodar sem Docker.
- Instalar dependencias:
uv sync- Iniciar o servidor FastAPI:
uv run fastapi dev --host 0.0.0.0 main.py- Acessar a aplicacao:
- Home HTML: http://localhost:8000/
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
As rotas estao divididas entre endpoints HTML (templates) e endpoints da API.
| Metodo | Rota | Descricao |
|---|---|---|
| GET | / | Pagina inicial com lista de posts |
| GET | /posts | Alias da pagina inicial com lista de posts |
| GET | /posts/{id} | Pagina HTML de um post especifico |
| GET | /users/{user_id}/posts | Pagina HTML com posts de um usuario |
| Metodo | Rota | Descricao |
|---|---|---|
| GET | /api/posts | Lista todos os posts |
| POST | /api/posts | Cria um novo post |
| GET | /api/posts/{id} | Retorna um post especifico |
| PUT | /api/posts/{id} | Atualiza um post |
| DELETE | /api/posts/{id} | Remove um post |
Schema de criacao de post (POST /api/posts):
{
"title": "Titulo do post",
"content": "Conteudo do post",
"user_id": 1
}Schema de atualizacao de post (PUT /api/posts/{id}):
{
"title": "Novo titulo",
"content": "Novo conteudo"
}| Metodo | Rota | Descricao |
|---|---|---|
| GET | /api/users | Lista todos os usuarios |
| POST | /api/users | Cria um novo usuario |
| GET | /api/users/{user_id} | Retorna um usuario especifico |
| PUT | /api/users/{id} | Atualiza informacoes do usuario |
| DELETE | /api/users/{id} | Remove um usuario |
| GET | /api/users/{user_id}/posts | Lista posts de um usuario |
Schema de criacao de usuario (POST /api/users):
{
"username": "johndoe",
"email": "john@example.com"
}Schema de atualizacao de usuario (PUT /api/users/{id}):
{
"image_file": "nome_arquivo.jpg"
}- Rotas iniciadas com /api retornam erros em JSON.
- Rotas HTML retornam pagina de erro (template 404.html).
- Erros de validacao (422) seguem o comportamento acima, conforme tipo da rota.