From d51155dd864a137fc41d5a6efba62f1c989d1e31 Mon Sep 17 00:00:00 2001 From: Luckaskl Date: Thu, 28 May 2026 13:46:51 -0500 Subject: [PATCH] =?UTF-8?q?implementa=C3=A7=C3=A3o=20e=20libera=C3=A7?= =?UTF-8?q?=C3=A3o=20do=20CORS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/main.py | 9 ++++++++ readme.md | 61 ++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 53 insertions(+), 17 deletions(-) diff --git a/app/main.py b/app/main.py index 5f878cd..75ddac6 100644 --- a/app/main.py +++ b/app/main.py @@ -1,4 +1,5 @@ from fastapi import FastAPI, Depends +from fastapi.middleware.cors import CORSMiddleware from app.core.security import get_current_user, UserAuth from app.core.config import settings from app.api.v1.api import api_router @@ -12,6 +13,14 @@ app = FastAPI( openapi_url=f"{settings.API_V1_STR}/openapi.json" ) +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + app.include_router(api_router, prefix=settings.API_V1_STR) @app.get("/") diff --git a/readme.md b/readme.md index a774292..7c1b9b6 100644 --- a/readme.md +++ b/readme.md @@ -42,32 +42,51 @@ Abaixo estão as informações detalhadas sobre as responsabilidades, fluxo e ar * **Busca e Filtragem:** Permitir que outros serviços consultem jogos por critérios específicos. ### Dados que o serviço precisa receber -Para o cadastro ou atualização de um jogo, o serviço requer: -* **Nome do jogo:** (String) -* **Descrição:** (Text/Markdown) -* **Gêneros:** (Array de IDs ou nomes) -* **Plataformas:** (Array de IDs - ex: Steam, Epic, Xbox) -* **Mídia:** (URLs de imagens de capa e galeria) -* **Desenvolvedora/Distribuidora:** (String) -* **Requisitos de Sistema:** (Objeto JSON com CPU, GPU, RAM mínimos e recomendados) +Para o cadastro de um jogo (`POST /api/v1/catalog/games`), o serviço requer o seguinte corpo JSON. Para atualização (`PATCH`), os campos são opcionais. + +```json +{ + "title": "Cyber-Acre 2077", + "description": "Um RPG de ação em um futuro distópico no norte do Brasil.", + "genres": ["Action", "RPG"], + "platforms": ["PC", "Linux"], + "developer": "Acre Studio", + "images": { + "thumbnail": "https://cdn.gameverse.com/covers/ca2077_thumb.jpg", + "header": "https://cdn.gameverse.com/headers/ca2077_wide.jpg" + }, + "system_requirements": { + "cpu": "Intel Core i7-4790K", + "gpu": "GTX 1060 6GB", + "ram": "12GB" + }, + "active": true +} +``` ### Dados que o serviço deve retornar Exemplo de resposta ao consultar um jogo específico: ```json { "success": true, - "message": "Jogo localizado com sucesso", + "message": "Detalhes do jogo", "data": { - "game_id": "gv-8829", - "title": "Cyber-Acre 2077", + "id": 8829, "slug": "cyber-acre-2077", - "platforms": ["PC", "Linux"], - "genres": ["Action", "RPG"], + "title": "Cyber-Acre 2077", "description": "Um RPG de ação em um futuro distópico no norte do Brasil.", + "genres": ["Action", "RPG"], + "platforms": ["PC", "Linux"], + "developer": "Acre Studio", "images": { "thumbnail": "https://cdn.gameverse.com/covers/ca2077_thumb.jpg", "header": "https://cdn.gameverse.com/headers/ca2077_wide.jpg" }, + "system_requirements": { + "cpu": "Intel Core i7-4790K", + "gpu": "GTX 1060 6GB", + "ram": "12GB" + }, "active": true } } @@ -88,10 +107,18 @@ Exemplo de resposta ao consultar um jogo específico: 6. O **Usuário** realiza uma busca e o serviço retorna a lista filtrada de jogos. ### Rotas da API -* `GET /api/v1/catalog/games` (Listagem com paginação e filtros de gênero/plataforma) -* `POST /api/v1/catalog/games` (Criação de novo título - Restrito a Admin) -* `GET /api/v1/catalog/games/{id_ou_slug}` (Detalhes completos de um jogo específico) -* `PATCH /api/v1/catalog/games/{id}` (Atualização parcial de dados como descrição ou imagens) + +> [!IMPORTANT] +> **Consulte o Swagger UI (`http://localhost:8000/docs`)** +> O Swagger é a **fonte oficial da verdade** para a nossa API. Recomendamos fortemente utilizá-lo para testar os endpoints de forma interativa, consultar os esquemas de requisição exatos (schemas Pydantic), ver o que é obrigatório/opcional e realizar as chamadas autenticadas facilmente configurando seu Token JWT no botão "Authorize". + +Todas as rotas abaixo requerem que o cliente envie o token de acesso (`Authorization: Bearer `): + +* `GET /api/v1/catalog/games` (Listagem com paginação e filtros) +* `POST /api/v1/catalog/games` (Criação de novo título) +* `GET /api/v1/catalog/games/{id_ou_slug}` (Detalhes completos de um jogo) +* `PATCH /api/v1/catalog/games/{id}` (Atualização parcial de dados) +* `DELETE /api/v1/catalog/games/{id_ou_slug}` (Remoção do jogo do catálogo) ### Possíveis erros * **Jogo não encontrado:** Quando um ID inválido é solicitado.