implementação e liberação do CORS
This commit is contained in:
@@ -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("/")
|
||||||
|
|||||||
61
readme.md
61
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.
|
* **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.
|
||||||
|
|||||||
Reference in New Issue
Block a user