/apimodelo-netcore

Modelo de API usando DDD(Domain Driven Design), Auto Mapper, Fluent Validation e Swagger

Primary LanguageC#

API Modelo - .NET Core, SQL Server e Autenticação JWT

Descrição

Modelo de API usando DDD(Domain Driven Design), Auto Mapper, Fluent Validation e Swagger

ORM: Entity Framework Core 2.2.3
Autenticação: JSON Web Tokens
Documentação: Swagger 4.0.1

Requisitos

  • dotnet core SDK - 2.2
  • dotnet core runtime - 2.2
  • Docker (Recomendado) ou Sql Server
  • Windows ou Linux

Rodar Projeto

Baixe o projeto

git clone https://github.com/estevaobraga/apimodelo-netcore.git

Restaure os pacotes

dotnet restore

Crie a base de dados

  • No Docker

    • Iniciar container Sql Server
      docker-compose up

    • Criar base de dados
      docker exec -it mongo-atm bash -c "sqlserver create database"

    • Acesse a base de dados
      usuário: sa
      senha: sa@12345

    • crie a base de dados
      create database dbapimodelo
      use dbapimodelo

    • rode o script.SQL

  • No Sql Server

    • Crie a base de dados e execute o script.SQL
    • Depois configure usuário e senha em: /apimodelo.netcore.infra.CrossCutting.IoC/NativeInjectorBootStrapper.cs
      "Server=myServerAddress;Database=DataBase;User Id=sa;Password=sa@12345;"

Rodar projeto

  • Pelo terminal /apimodelo.netcore.presentation.webapi
    dotnet run

  • Pelo Visual Studio:
    Selecione a opção de execução pelo IIS Express

Testar

Acesse a URL /swagger do projeto para visualizar a documentação e realizar as chamadas a API

Criar novo usuário
Método POST para a rota /api/usuario
Alt Text

Realizar login
Alt Text
Token
Alt Text

Acessar rotas protegidas
Alt Text

Rotas do usuário
Alt Text

Rotas da entidade livro
Alt Text

Melhorias em construção:

  • Reduzir o retorno do fluent validate em caso de erro
{
	[
		"propertyName": "Nome",
		"errorMessage": "Preencha o campo Nome"
	],
	[
		...
	]
}
  • Criptografar a senha do usuário

  • Endereço, usuário e senha da base de dados variável em arquivo de configuração (appsettings)