/aspnet-core-webapi

Um template com várias configurações para aspnet-core

Primary LanguageC#

aspnet-core-webapi

Esse é um projeto para futuras consultas de técnicas empregadas com ASP.NET Core 2.2 aplicando API-Guidelines da Microsoft.

Técnicas

  • RESTfull
  • Autenticação JWT
  • Swagger
  • Versionamento de API
  • Docker
  • HealthCheck - Utilizando a lib Xabaril/AspNetCore.Diagnostics.HealthChecks
    • Acessar a url /healthz no browser
  • FluentValidation
  • GraphQL
    • Acessar a url /ui/playground no browser
  • EF
    • MySQL
    • Migrations
  • Resiliência requisições Http(utilizando Polly)
    • Retry
    • Timeout
    • CircuitBreaker
  • Caching
    • Redis - Baseado nessa implementação
  • MessageBrokers
    • RabbitMQ
      • - Criação customizada de exchanges/queue por Atributos
  • SonarQube

GraphQL

Para utilizar o GraphQL é necessário ter um token de autenticação Bearer. Acessando a url https://localhost:5001/ui/playground terá disponível uma UI para realizar alguns testes ;)

Para adicionar novos personagens basta realizar as operações do contorller Dragon Ball.

Tipos disponívels:

type Character {
    id: int,
    name: string!,
    bithDate: string!,
    relatives: [Relative!],
    kind: Kind!
}

type Relative {
    id: int!,
    name: string!,
    bithDate: string!,
    relatives: [Relative!],
    relativeKind: RelativeKind!
}

enum Kind {
    HUMAN = 1,
    SAYAJIN = 2
}

enum RelativeKind {
    Brother = 1,
    Sister = 2,
    Son = 3,
    Daugther = 4,
    Spouse = 5,
    Father = 6 ,
    Mother = 7
}

Queries disponíveis

characters
character(id: int)

Mutations disponíveis

createCharacter(character: Character)

Docker

O arquivo Dockerfile já contém as instruções necessárias para serem buildadas, vamos executar o comando abaixo para compilar uma imagem.

docker build -t aspnet-core-webapi .

Docker-compose

O arquivo docker-compose.yml já contém as imagens necessárias para rodar a aplicação, basta executar o comando abaixo:

docker-compose build
docker-compose up

A porta do container é 80, porém estará pública na porta 8181.

E acessar a página http://localhost:8181/index.html

SonarQube