Suite de serviços para desenvolvimentos de API's baseados em uma arquitetura hexagonal.
O intuito desse projeto é facilitar na criação de apis fornecendo uma configuração padrão.
Monte Olimpo Base fornece uma suite de pacotes voltadas para questões de infra estrtura e serviços básicos como Ioc de logs, tratamento de exceções e swagger por exempo.
-
MonteOlimpo.Base.Extensions
- Apresenta Serviços extensão para as aplicações .net core, como por exemplo RegisterAllTypes que realiza o IoC por assembly.
-
MonteOlimpo.Base.Swagger
- Apresenta o método de extensão AddMonteOlimpoSwagger que realiza a configuração do Swagger em uma aplicação .net core.
-
MonteOlimpo.Base.Log
- Apresenta o método de extensão AddMonteOlimpoLogging que realiza a configuração do Serillog em uma aplicação .net core com base em um arquivo serilogsettings.json ( Obs.: A aplicação deve reconhecer o arquivo com serilogsettings.json como arquivo de configuração, o pacote MonteOlimpo.Base.Extensions possui implementação para isso ).
Para configurar o log corretamente o aquivo serilogsettings.json deve possir a seguinte configuração:
"LogConfiguration": { "EnableLog": true, "EnableLogConsole": true, "EnableLogElasticSearch": true }
Caso tenha habilitado o LogElasticSearch é necessário configurar as informações do elastic seach, informando dados como o indice que será utilizado e local do host, neste exemplo foi utilizado a configuração do Monte Olimpo Auth Server
"ElasticConfiguration": { "UseAuthentication": false, "UrlHost": "http://localhost:9200", "IndexName": "monteolimpo-auth-server" }
-
MonteOlimpo.Base.CoreException
- Apresenta as classes Base para tratamento de erros de negócio e validação de Models.
- Referências Externas:
-
MonteOlimpo.Base.ExceptionHandler.Abstractions
- Apresenta Interface para o Handle de Exceções.
-
MonteOlimpo.Base.ExceptionHandler
-
Implementação do Handle de Exceções para APIs .net core, no qual identifica o tipo de exceção, serializa e retorna. Caso seja um erro 400 retorna serializa o objeto e exibe na tela uma mensagem customizada. Caso seja um erro 500 cria um Guid, loga o erro com toda a stack e retorna somente o guid, evitando o envio da stack trace para quem realiza as chamadas. Com isso garantimos maior segurança.
-
MonteOlimpo.Base.Filters
- Apresenta a implementação dos filtros MVC utilizados nas aplicações MonteOlimpo, entre elas está o filtro de exceções que utiliza o MonteOlimpo.Base.ExceptionHandler para tratar as exceções.
- Referências:
-
MonteOlimpo.Base.ValidationHandler.Abstractions
- Apresenta Interface para o Handle de Validations.
-
MonteOlimpo.Base.ValidationHandler
- Apresenta uma implementação do Handle de Action voltados para tratamento de validações de models utilizando Fluent Validation. Caso haja algum erro no model de entrada é lançado um erro do tipo 420 que é serializado e retornado para o solicitante. Com isso basta implementar implementar as regras em uma classe que herde de AbstractValidator e apontar o assemblie no método GetValidationAssemblies() do Startup da ApiBoot
- Referências:
- Referências Externas:
-
MonteOlimpo.Base.ApiBoot
- Apresenta a configuração base das aplicações MonteOlimpo. Através da classe MonteOlimpoBootStrap é possível utilizar toda a configuração dos pacotes acima, realizando a herança do Startup para a mesma.
- Referências:
Exemplo (monte-olimpo)
using MonteOlimpo.Service;
using System.Collections.Generic;
using System.Reflection;
namespace MonteOlimpo.WebApi
{
public class Startup : MonteOlimpoBootStrap
{
public Startup(IConfiguration configuration)
: base(configuration)
{
}
public override void ConfigureServices(IServiceCollection services)
{
base.ConfigureServices(services);
}
protected override IEnumerable<Assembly> GetAditionalAssemblies()
{
yield return typeof(GodRepository).Assembly;
yield return typeof(GodService).Assembly;
}
}
}
Dessa forma temos uma startup enxuta tendo maior tempo desenvolvimento das regras de negócio da aplicação.