Files
Geradores/GeradoresWS/README.md
2026-10-11 23:52:48 +01:00

65 lines
2.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# GeradoresWS
API REST ASP.NET Core (.NET 10, minimal APIs) que expõe os geradores do
[GeradoresService](../GeradoresService/README.md). É só de leitura, não tem autenticação nem base de dados.
## Executar
```bash
dotnet run --project GeradoresWS --launch-profile http
# http://localhost:5053 → redirecciona para /docs
```
| Perfil (`launchSettings.json`) | URL |
|---|---|
| `http` | http://localhost:5053 |
| `https` | https://localhost:7266 e http://localhost:5053 |
| `Docker` | Visual Studio, usa o `Dockerfile` desta pasta |
## Endpoints
| Método | Rota | Descrição |
|---|---|---|
| GET | `/api/v1/generators` | Lista os geradores e as opções de cada um |
| GET | `/api/v1/generators/{id}` | Detalhe de um gerador (404 se não existir) |
| GET | `/api/v1/generators/{id}/generate` | Gera valores. Query: `count` (1–1000, por omissão 1), `seed` (opcional) e as opções do gerador |
| GET | `/api/v1/generators/{id}/validate?value=...` | Valida um valor de um tipo (404 se o tipo não validar) |
| GET | `/api/v1/validate?value=...` | Validador livre: detecta o tipo e valida |
| GET | `/openapi/v1.json` | Documento OpenAPI |
| GET | `/docs` | Documentação interactiva (Scalar) |
| GET | `/health` | Health check |
Exemplos:
```bash
curl "http://localhost:5053/api/v1/generators/nif/generate?count=5&tipo=5"
curl "http://localhost:5053/api/v1/generators/iban/validate?value=PT50000201231234567890154"
curl "http://localhost:5053/api/v1/validate?value=123456789"
```
Erros de input (opção desconhecida, valor de opção inválido, `count` fora do intervalo) devolvem
`400` com `ValidationProblemDetails`; as restantes falhas devolvem `ProblemDetails`.
## Configuração
- **CORS**: qualquer origem pode fazer `GET` (API pública, sem credenciais).
- **Porta em container**: `8080` (`ASPNETCORE_HTTP_PORTS`).
- `InvariantGlobalization` está activo, por isso a imagem não precisa de ICU.
## Docker
O `Dockerfile` da raiz do repositório é o usado no `docker compose` e no Jenkins. O `Dockerfile` desta pasta é
equivalente, com o stage `base` que o Visual Studio espera. Em ambos o contexto de build é a raiz do repositório:
```bash
docker build -t geradoresws .
docker run -p 5050:8080 geradoresws
```
## Ficheiros
| Ficheiro | Conteúdo |
|---|---|
| `Program.cs` | Serviços (registry, OpenAPI, CORS, health checks) e pipeline |
| `GeneratorEndpoints.cs` | Rotas `/api/v1` e DTOs de resposta |