Projeto utilizado nas aulas de desenvolvimento de Web API com Asp.NET Core.
O Curso de Desenvolvimento Web API com Asp.NET Core foi iniciativa de Rodrigo Gonçalves Rodrigues, aluno do Centro Universitário Eurípedes de Marília (UNIVEM), com o objetivo de divulgar sua experiência com a plataforma Asp.NET e possibilitar aos alunos novos e/ou menos experientes o contato com o ciclo de desenvolvimento de uma aplicação completa, do início até o fim (estrutura, desenvolvimento, testes e deployment). O curso foi ministrado nos laboratórios fornecidos pelo UNIVEM para alunos do 1º até o último ano de graduação nos cursos de Ciência da Computação e Sistemas de Informação.
- Introdução a Web API com Asp.NET Core (Criando primeira API).
- Conceitos de Web API: Rotas, requisições e respostas HTTP, verbos.
- Testando requisições com Postman.
- Conceitos básicos de programação: operadores, variáveis, condições e loops.
- Conceitos básicos de C#: tipos de variáveis, fluxo de programa.
- Conceitos de variáveis e objetos no C#: métodos, construtores, campos, propriedades, parâmetros e instâncias.
- Introdução a orientação a objetos: modificadores de acesso, abstração, encapsulamento, herança e polimorfismo.
- Avançando com Web API: definição de rotas customizadas aos métodos, serialização de parâmetros da requisição, retornando resposta como JSON.
- RESTful API: definindo verbos para as ações dos controllers, criando models e CRUD com lista em memória.
- Documentando requisições com Postman.
- Introdução a conceitos intermediários de fluxo de programa: enum, LINQ, tipo anônimo (dynamic), tratamento de exceções
- Avançando com conceitos de fluxo de programas: sobrecarga de métodos, classes e métodos estáticos, data annotations, verificação e validação com ModelState, tratando mensagens de validação.
- Introdução a conceitos avançados de programação em C#: Interfaces, métodos de extensão, cláusula using.
- Introdução ao LiteDB NoSQL, Serverless and Mongo based DataBase: Criando banco, consultando coleções, configurando models e criando CRUD em banco de dados.
- Avançando com conceitos avançados: referenciando outras coleções em modelos com LiteDB, carregando modelos relacionados (join).
- Programação genérica: Introdução a classes genéricas, generalizando classes e utlizando constraints para classes genéricas.
- Conceitos avançados de configurações para Web API: configurando e entendendo CORS, configurando rotas no startup, configurando e entendendo container de injeção de dependência (transient, scoped and singleton), publicando API com Microsoft Imagine's Signature (Azure para estudantes).
- Introdução a autorização e autenticação: criando modelo usuário, usando critografia com chave definida para criptografar senhas de usuários, configurando validação de Unique para emails de usuário no banco de dados, criando validações customizadas para tamanhos de lista e CPF.
- Configurando Autenticação: criando classes de configuração para JWT Bearer, gerando JWT no login, utilizando JWT para autorizar acesso a recursos com AuthorizeAttribute, autorização por Roles, entendendo diferença entre 401 (Unauthorized) e 403 (Forbidden).
- Introdução a testes com Visual Studio: criando projeto de testes, criando e testando testes unitários, criando e testando testes de integração com LiteDB.
- Criando ciclo de vida de teste: criando Setup e TearDown para configuração de inicialização e de limpeza de lixos criados por testes.