Git Product home page Git Product logo

api-wiz-template's Introduction

Wiz - API

Desenvolvimento, por onde começar

Passos para execução do projeto:

  1. Abrir Prompt de Comando de sua preferência (CMD ou PowerShell);

  2. Criar pasta para o projeto no local desejado;

  3. Executar os seguintes comandos;

dotnet new -i Wiz.Dotnet.Template.API
dotnet new wizapi -n [NomeProjeto]

  1. Executar comando para configurar aplicação em modo (HTTPS);

dotnet dev-certs https --trust

  1. Incluir configurações de varíaveis de ambiente no caminho abaixo:

Visual Studio

├── Wiz.[NomeProjeto] (solução)
  ├── Wiz.[NomeProjeto].API (projeto)
    ├── appsettings.{ENVIRONMENT}.json

Visual Studio Code

├── src (pasta física)
  ├── Wiz.[NomeProjeto].API (projeto)
    ├── appsettings.{ENVIRONMENT}.json

Dentro do arquivo local.settings.json, há o conteúdo para modificação das variáveis:

{
  "ApplicationInsights": {
    "InstrumentationKey": "KEY_APPLICATION_INSIGHTS"
  },
  "ConnectionStrings": {
    "CustomerDB": "CONNECTION_DATABASE"
  },
  "TokenValidationParameters": {
    "ValidAudience": "URL_SSO"
  },
  "API": {
    "ViaCEP": "https://viacep.com.br/ws/"
  },
  "HealthChecks-UI": {
    "HealthChecks": [
      {
        "Name": "Customer DB Health",
        "Uri": "https://localhost:5001/health"
      }
    ],
    "Webhooks": [],
    "EvaluationTimeOnSeconds": 30,
    "MinimumSecondsBetweenFailureNotifications": 60
  }
}
}
  1. (Opcional) Inserir chave do Application Insights conforme configurado no Azure no arquivo appsettings.{ENVIRONMENT}.json.

Caso não há chave de configuração no Azure, não é necessário inserir para executar o projeto local.

Execução do projeto

Visual Studio

  1. Executar projeto via Kestrel;

Executar o projeto via Kestrel facilita a troca de ambientes (environments) e a verificação de logs em execução da aplicação em projetos .NET Core. Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:

├── Wiz.[NomeProjeto] (solução)
  ├── Wiz.[NomeProjeto].API (projeto)
    ├── Properties (pasta física)
      ├── launchSettings.json

Dentro do arquivo launchSettings.json, há o conteúdo que indica a configuração de ambiente via Kestrel:

    "Wiz.[NomeProjeto].API": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    }

Visual Studio Code

  1. (Recomendado) Instalar extensões para desenvolvimento:
  1. (Recomendado) Instalar extensões para testes:
  1. Executar projeto via Kestrel (Tecla F5);

Por padrão, todo projeto executado no Visual Studio Code é executado via Kestrel (Tecla F5). Os ambientes podem ser configurados dentro das propriedades do projeto, conforme caminho abaixo:

├── .vscode (pasta física)
  ├── launch.json
  1. Utilizar a função task para executar ações dentro do projeto. A função está presente no caminho do menu abaixo:
Terminal -> Run Task
  1. Selecionar a função task a ser executada no projeto:
  • clean - Limpar solução
  • restore - Restaurar pacotes da solução
  • build - Compilar pacotes da solução
  • test - Executar projeto de testes
  • test with coverage - Executar projeto de testes com cobertura

Estrutura

Padrão das camadas do projeto:

  1. Wiz.[NomeProjeto].Domain: domínio da aplicação, responsável de manter as regras de negócio para a API;
  2. Wiz.[NomeProjeto].Infra: camada mais baixa, para acesso a dados, infraestrutura e serviços externos;
  3. Wiz.[NomeProjeto].API: responsável pela camada de disponibilização dos endpoints da API;
  4. Wiz.[NomeProjeto].Tests: responsável pela camada de testes unitários e de integração dos projetos.

Formatação do projeto dentro do repositório:

├── src 
  ├── Wiz.[NomeProjeto].Domain (projeto)
  ├── Wiz.[NomeProjeto].Infra (projeto)
  ├── Wiz.[NomeProjeto].API (projeto)
  ├── Wiz.[NomeProjeto].Tests (projeto)
├── Wiz.[NomeProjeto] (solução)

Dependências

Build e testes

  • Obrigatoriedade de 80% de teste de cobertura.

Visual Studio

  1. Comandos para geração de build:
  • Debug: Executar via Test Explorer (adicionar breakpoint)
  • Release: Executar via Test Explorer (não adicionar breakpoint)
  1. Ativar funcionalidade Live Unit Testing para executar testes em tempo de desenvolvimento (execução) do projeto.

  2. Ativar funcionalidade Code Coverage para cobertura de testes.

As funcionalidades Live Unit Testing e Code Coverage estão disponíveis apenas na versão Enterprise do Visual Studio.

Visual Studio Code

  1. Executar task de teste desejada:
  • test - Executar projeto de testes
  • test with coverage - Executar projeto de testes com cobertura
  1. Ativar Watch na parte inferior do Visual Studio Code para habilitar cores nas classes que descrevem a cobertura. É necessário executar os testes no modo test with coverage.

NuGet privado

Visual Studio

  1. Adicionar url do NuGet privado no caminho do menu abaixo:
Tools -> NuGet Package Manager -> Package Sources

Visual Studio Code

  1. Abrir Prompt de Comando de sua preferência (CMD ou PowerShell) ou utilizar o terminal do Visual Studio Code;

  2. Localizar source (src) do projeto desejado para instalar o NuGet;

  3. Executar comando para instalar NuGet privado;

dotnet add package [NomePacote] -s https://pkgs.dev.azure.com/[NomeOrganizacao]/_packaging/[NomeProjeto]/nuget/v3/index.json --interactive

  1. (Opcional) Na primeira instalação do NuGet privado irá aparecer no terminal um site com um código a ser inserido. Posteriormente, realizar login na conta desejada e o pacote já será instalado.

A instalação é realizada apenas uma vez até a expiração do token de autenticação (3 meses).

CI/CD

README

  • Incluir documentação padrão no arquivo README.md.
  • Após inclusão da documentação padrão, excluir este arquivo e TODAS as classes indentificadas como exemplo.
    • O serviço para busca de endereço Via CEP assim como o contexto de Customer foi utilizado apenas como exemplo. O uso do serviço Via CEP está disponível no NuGet corporativo.

api-wiz-template's People

Contributors

rokam avatar

Watchers

James Cloos avatar Renan Queiroz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.