implementação e liberação do CORS

This commit is contained in:
2026-05-28 13:46:51 -05:00
parent 0a8a3d271d
commit d51155dd86
2 changed files with 53 additions and 17 deletions

View File

@@ -1,4 +1,5 @@
from fastapi import FastAPI, Depends from fastapi import FastAPI, Depends
from fastapi.middleware.cors import CORSMiddleware
from app.core.security import get_current_user, UserAuth from app.core.security import get_current_user, UserAuth
from app.core.config import settings from app.core.config import settings
from app.api.v1.api import api_router from app.api.v1.api import api_router
@@ -12,6 +13,14 @@ app = FastAPI(
openapi_url=f"{settings.API_V1_STR}/openapi.json" 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.include_router(api_router, prefix=settings.API_V1_STR)
@app.get("/") @app.get("/")

View File

@@ -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. * **Busca e Filtragem:** Permitir que outros serviços consultem jogos por critérios específicos.
### Dados que o serviço precisa receber ### Dados que o serviço precisa receber
Para o cadastro ou atualização de um jogo, o serviço requer: 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.
* **Nome do jogo:** (String)
* **Descrição:** (Text/Markdown) ```json
* **Gêneros:** (Array de IDs ou nomes) {
* **Plataformas:** (Array de IDs - ex: Steam, Epic, Xbox) "title": "Cyber-Acre 2077",
* **Mídia:** (URLs de imagens de capa e galeria) "description": "Um RPG de ação em um futuro distópico no norte do Brasil.",
* **Desenvolvedora/Distribuidora:** (String) "genres": ["Action", "RPG"],
* **Requisitos de Sistema:** (Objeto JSON com CPU, GPU, RAM mínimos e recomendados) "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 ### Dados que o serviço deve retornar
Exemplo de resposta ao consultar um jogo específico: Exemplo de resposta ao consultar um jogo específico:
```json ```json
{ {
"success": true, "success": true,
"message": "Jogo localizado com sucesso", "message": "Detalhes do jogo",
"data": { "data": {
"game_id": "gv-8829", "id": 8829,
"title": "Cyber-Acre 2077",
"slug": "cyber-acre-2077", "slug": "cyber-acre-2077",
"platforms": ["PC", "Linux"], "title": "Cyber-Acre 2077",
"genres": ["Action", "RPG"],
"description": "Um RPG de ação em um futuro distópico no norte do Brasil.", "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": { "images": {
"thumbnail": "https://cdn.gameverse.com/covers/ca2077_thumb.jpg", "thumbnail": "https://cdn.gameverse.com/covers/ca2077_thumb.jpg",
"header": "https://cdn.gameverse.com/headers/ca2077_wide.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 "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. 6. O **Usuário** realiza uma busca e o serviço retorna a lista filtrada de jogos.
### Rotas da API ### 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) > [!IMPORTANT]
* `GET /api/v1/catalog/games/{id_ou_slug}` (Detalhes completos de um jogo específico) > **Consulte o Swagger UI (`http://localhost:8000/docs`)**
* `PATCH /api/v1/catalog/games/{id}` (Atualização parcial de dados como descrição ou imagens) > 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 <token>`):
* `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 ### Possíveis erros
* **Jogo não encontrado:** Quando um ID inválido é solicitado. * **Jogo não encontrado:** Quando um ID inválido é solicitado.