{"id":50117814,"url":"https://github.com/luccati/web-api-template","last_synced_at":"2026-05-23T16:04:24.008Z","repository":{"id":357196304,"uuid":"1229820273","full_name":"LuccaTi/Web-API-Template","owner":"LuccaTi","description":"An API template designed for consuming external HTTP services.","archived":false,"fork":false,"pushed_at":"2026-05-11T18:06:01.000Z","size":31,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-11T20:11:04.686Z","etag":null,"topics":["api-rest","asp-net-core","csharp","http-client","logging","net-core","webapi"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LuccaTi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-05T12:16:30.000Z","updated_at":"2026-05-11T18:06:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/LuccaTi/Web-API-Template","commit_stats":null,"previous_names":["luccati/web-api-template"],"tags_count":null,"template":true,"template_full_name":null,"purl":"pkg:github/LuccaTi/Web-API-Template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuccaTi%2FWeb-API-Template","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuccaTi%2FWeb-API-Template/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuccaTi%2FWeb-API-Template/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuccaTi%2FWeb-API-Template/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LuccaTi","download_url":"https://codeload.github.com/LuccaTi/Web-API-Template/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LuccaTi%2FWeb-API-Template/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33402174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","asp-net-core","csharp","http-client","logging","net-core","webapi"],"created_at":"2026-05-23T16:04:13.947Z","updated_at":"2026-05-23T16:04:23.998Z","avatar_url":"https://github.com/LuccaTi.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Web API Template — .NET 8\n\n## Visão geral\nEste repositório contém um template de API REST construída com ASP.NET Core (.NET 8). O projeto já vem estruturado com injeção de dependência, logging com Serilog, configuração via `appsettings.json` e Swagger opcional para documentação e testes.\n\nO propósito é criar um \"esqueleto\"de Web APIs que sirva como um padrão de implementação, configuração e logging.\n\nEndpoint de exemplo disponível:\n- `GET /api/v1/test` → retorna uma lista de usuários da API de teste `jsonplaceholder.typicode.com`.\n- `GET /api/v1/test/{id}` → retorna um usuário específico da lista de teste.\n\n## Tecnologias e bibliotecas essenciais\n- .NET 8 (ASP.NET Core)\n- HttpClient: Biblioteca que faz as requisições e os tratamentos Http.\n- Swashbuckle.AspNetCore (Swagger/OpenAPI)\n- Mapster: Biblioteca usada para mapear os objetos trafegados entre as camadas.\n- FluentValidation: Biblioteca para construção de regras de validação fortemente tipadas (validando os DTOs).\n- Microsoft.Extensions.Configuration: Responsável por fazer leitura e escrita de arquivos de configuração.\n- Serilog: Responsável por fazer a escrita em arquivos de Log.\n- xUnit \u0026 Moq: Utilizados no projeto de testes automatizados para garantir a qualidade de componentes (ex: testes de serviços).\n\n## Estrutura do projeto\nO projeto divide suas responsabilidades da seguinte forma:\n\n- `src/WebAPITemplate.Api`:\n  - **Responsabilidade**: Camada de Apresentação e ponto de entrada (`Program.cs`, `.exe`). Centraliza a injeção de dependências, registra middlewares (ex: `ExceptionHandlerMiddleware` preparado para falhas de validação fluente, customização de log levels e cancelamento HTTP 499) e expõe os endpoints via Controllers com suporte contínuo a `CancellationToken`. Usa os projetos Application e Infrastructure como referência.\n\n- `src/WebAPITemplate.Application`:\n  - **Responsabilidade**: Casos de uso da aplicação. Contém abstrações de serviços, clientes externos, Mappers (`Mapster`), regras e extensões de validação (`FluentValidation`) e os DTOs de transporte que fluem de e para a API. Usa o projeto Domain como referência.\n\n- `src/WebAPITemplate.Domain`:\n  - **Responsabilidade**: Entidades de núcleo e regras de negócio absolutas, além das exceções de uso geral (`NotFoundException`, `ConflictException`, etc).\n\n- `src/WebAPITemplate.Infrastructure`:\n  - **Responsabilidade**: Implementação dos contratos definidos em Application/Domain (Ex: banco de dados, Clients, etc). Usa o projeto Application como referência.\n\n\n## Endpoints\n- `GET /api/v1/Test`\n    - Resposta 200: `Lista de users`\n    - Resposta 400: detalhes do erro em caso de falha, com log registrado.\n- `GET /api/v1/Test/{id}`\n    - Resposta 200: `User específico`\n    - Resposta 400: detalhes do erro em caso de falha, com log registrado.\n\n## Configuração\n\n### appsettings.json\nConfigurações principais da aplicação (seção `AppConfig`):\n- `UseSwaggerProduction` (\"true\" | \"false\"): habilita/desabilita o uso do swagger em produção (conveniência para testes).\n- `ClientUrl` (string): URL base que será consumida pela API.\n- `Timeout` (int): Tempo de timeout das conexões.\n\n### appsettings.Production.json\nConfiguração específica para ambiente de produção:\n- Define o Kestrel para escutar HTTPS na porta 443 (padrão web).\n- Usado quando `ASPNETCORE_ENVIRONMENT=Production`.\n\n### Perfis de execução (local)\nDefinidos em `src/WebAPITemplate.Api/Properties/launchSettings.json`:\n- HTTPS: `https://localhost:5001`\n- Ambiente padrão: `ASPNETCORE_ENVIRONMENT=Development`\n\n## Uso da API\nA API pode ser usada via console ao compilar o código e usar o .exe dentro do terminal, vale tanto para uso em Debug quanto Release.\n\n## Testes Automatizados\nO repositório inclui testes unitários, estruturados no projeto `tests/WebAPITemplate.Application.Tests`, validando regras de negócios e os Serviços de domínio (`UserServiceTests`) com bibliotecas como `xUnit`.\n- Para executar os testes via terminal: `dotnet test`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluccati%2Fweb-api-template","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluccati%2Fweb-api-template","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluccati%2Fweb-api-template/lists"}