/BestPractices

Esse projeto tem como intuito demonstrar boas praticas na criação de uma API usando .net

Primary LanguageC#

Sobre o Projeto


Objetivo

Este projeto tem como objetivo demonstrar as melhores práticas na criação de uma API RESTful utilizando .NET e uma arquitetura baseada em Domain-Driven Design (DDD). Através deste projeto, busco apresentar uma aplicação bem estruturada, modular e fácil de manter, seguindo princípios de desenvolvimento de software de alta qualidade.


Tecnologias Utilizadas

    🔥ASP.NET Core: Framework utilizado para desenvolver a API RESTful.
    🔥Entity Framework Core: ORM para manipulação de dados e mapeamento objeto-relacional.
    🔥DDD: Abordagem de design utilizada para estruturar a aplicação de forma modular e coesa.
    🔥Swagger: Ferramenta utilizada para documentação automática da API.
    🔥xUnit e Moq: Ferramentas utilizadas para testes unitários e mock de dependências.
    🔥AutoMapper: Biblioteca usada para mapeamento entre objetos.
    🔥Unit Of Work: Gerencia as transações e garante a consistência dos dados durante operações que envolvem múltiplas atualizações, inserções ou exclusões no banco de dados.

Estrutura do Projeto

O projeto está organizado em diferentes camadas, seguindo os princípios do DDD:

  • API: Contém os controladores da API e a configuração inicial da aplicação.
  • Application: Implementa a lógica de aplicação, incluindo serviços e objetos de transferência de dados (DTOs).
  • Domain: Define as entidades do domínio, interfaces dos repositórios e serviços de domínio, além dos objetos de valor.
  • Infrastructure: Implementa os repositórios, configura o contexto do banco de dados e define as configurações de mapeamento.
  • Tests: Contém os testes unitários para as camadas de domínio, aplicação e infraestrutura.

Funcionalidades

  • Validação de Dados: Validação de entrada utilizando FluentValidation.
  • Documentação da API: Documentação automatizada utilizando Swagger.
  • Testes Automatizados: Testes unitários para garantir a qualidade e a robustez do código.