ASP.NET MVC 5 - Criando e Consumindo uma Web API - I
Hoje vou iniciar uma série de artigos que mostra como criar uma WEB API na ASP .NET MVC 5 e depois como consumir essa API em uma aplicação ASP .NET MVC 5. |
A criação de ASP .NET Web APIs e de projetos ASP .NET MVC 5 já foram discutidas em outros artigos que você pode conferir nas referências.
Assim, para não ficar repetitivo vou abordar o assunto como um tutorial resumido focando os pontos principais de cada etapa.
Vamos iniciar criando uma WEB API que expõe serviços para gerenciar informações de Contatos.
recursos usados :
Criando a WEB API ASP .NET MVC
Abra o Visual Studio 2019 Community e clique em New Project:
No menu File selecione Add -> New Project;
A seguir selecione :
Escolha o template ASP .NET Core Web Application e clique em Next;
A seguir informe o nome ApiContatos e clique em Create.
Selecione o template Web API, desmarque a opção para habilitar o HTTPS e clique em Create.
Abaixo temos a estrutura do projeto criado que iremos usar para criar nossa API.
Vamos incluir uma referência no projeto ao Entity Framework 6.x pois vamos usar esse ORM para definir a lógica de acesso aos dados.
No menu Tools-> Nuget Package Manager -> Manage Nuget Packages for Solution clique em Browse e informe o nome EntityFramework:
Definindo o modelo de domínio
Vamos definir um modelo de domínio bem simples para gerenciar informações de contatos. Para isso vamos criar as classes Contato e Endereco na pasta Models:
1- Contato
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ApiContatos.Models
{
[Table("Contatos")]
public class Contato
{
[Key]
public int ContatoId { get; set; }
[StringLength(100)]
public string Nome { get; set; }
[StringLength(150)]
public string Email { get; set; }
[StringLength(40)]
public string Telefone { get; set; }
[Required]
public virtual Endereco Endereco { get; set; }
public virtual int EnderecoId { get; set; }
}
}
|
2- Endereco
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace ApiContatos.Models
{
[Table("Enderecos")]
public class Endereco
{
[Key]
public int EnderecoId { get; set; }
[StringLength(150)]
public string Local { get; set; }
[StringLength(100)]
public string Cidade { get; set; }
[StringLength(100)]
public string Estado { get; set; }
}
}
|
Nas propriedades de navegação Enderecos e Contato usamos a palavra virtual que permite que o Entity Framework crie um proxy em torno da propriedade virtual para que a propriedade possa suportar o lazy load e rastreamento de alterações mais eficiente.
Essas propriedades são chamadas de propriedades de navegação e definem um relacionamento com outra entidade. Aqui estamos definindo um relacionamento do tipo um para um onde um Contato possui um Endereço.
Estamos usando o Data Annotations e definindo atributos que irão definir a criação dos campos nas tabelas com os tamanhos indicados. O atributo [key] indica que o campo é uma chave primária, e, o atributo [Table("")] define o nome da tabela que será criada no banco de dados. O Atributo [Required] indica que o valor é obrigatório e define a entidade principal no relacinamento um-para-um.
Esta definindo a propriedade EnderecoId na classe Contato para qualificar o endereço e assim não precisar localizar um endereço para obter e o seu id.
Criando a classe de contexto e a string de conexão
A classe de
contexto é a classe mais importante ao trabalhar com o EF 6. Ela representa uma
sessão com o banco de dados no qual você pode executar operações
CRUD (Criar, Ler, Atualizar, Excluir).
A classe de contexto no Entity Framework é uma classe que deriva de
System.Data.Entity.DbContextDbContext no EF 6.
Uma instância da classe de contexto representa os padrões
Unit Of Work e Repository, nos quais podemos
combinar várias alterações em uma única transação de banco de dados.
A classe de contexto é usada para consultar ou salvar dados no banco de dados.
Também é usada para configurar as classes de domínio, mapeamentos relacionados
ao banco de dados, alterar as configurações de rastreamento, armazenamento em
cache, transação etc.
Vamos criar a classe AppDbContext na pasta Models :
using System.Data.Entity;
namespace ApiContatos.Models
{
public class AppDbContext : DbContext
{
public AppDbContext() : base("ContatoContext")
{}
public DbSet<Contato> Contatos { get;set; }
public DbSet<Endereco> Enderecos { get; set; }
}
}
|
Na classe de contexto acima, as propriedades Contatos e Enderecos do tipo DbSet <TEntity> são chamadas de conjuntos de entidades. O EF Core irá mapear as entidades Contato e Endereco para as tabelas Contatos e Enderecos no banco de dados; se você usar o Migrations essas tabelas serão criadas no banco de dados.
Estamos definindo o nome da string de conexão como ContatoContext e a estamos passando no construtor da classe de contexto.
A seguir podemos definir o valor da string de conexão no arquivo Web.Config:
... <connectionStrings> <add name="ContatoContext" connectionString="Data Source=MACORATTI;Initial Catalog=ClienteDB;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" providerName="System.Data.SqlClient"/> </connectionStrings> </configuration> |
Se desejar criar as tabelas no banco de dados usando o Migrations emita os comandos na janela do Package Manager Console:
enable-migrations
add-migration Inicial
update-database
Nota: Se ocorrer um erro inesperado nesta fase talvez você tenha que desinstalar a versã0 6.3.0 do EF e instalar a versão 6.2.0
Ao final teremos as tabelas Contatos e Enderecos conforme abaixo:
Para agilizar eu já incluir alguns dados nas tabelas para podermos fazer os testes.
Na próxima parte do artigo vamos criar o controlador e definir os métodos Action GET para expor as funcionalidades da nossa API.
João
1:17,18
Veja os
Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique
e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ? |
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
ASP .NET Core 2 - MiniCurso Básico - Macoratti
ASP .NET Core MVC - CRUD básico com ADO .NET - Macoratti
ASP .NET Core - Implementando a segurança com ... - Macoratti
ASP .NET Core - Iniciando com ASP .NET Core MVC e ... - Macoratti
ASP .NET Core MVC - Criando um site com MySql e EF ... - Macoratti
ASP .NET Core - Gerenciador de Despesas Pessoais com ... - Macoratti
Minicurso ASP .NET Core 2.0 - Apresentando MVC - YouTube
ASP .NET Core - Configurando o ambiente de ... - Macoratti
ASP .NET Core e EF Core - Configurando o ambiente - Macoratti
ASP .NET Core - Como configurar o AutoMapper - Macoratti