API .Net Core

Nesta aula iremos estudar a API do .Net Core, iremos criar uma API utilizando o ambiente Unix com Docker e SQL Server.

assinaturaAssine nossa Comunidade

API .Net Core

Na aula de hoje iremos utilizar o .net core para construir uma API em ambiente Unix. Esta API terá uma documentação e um model chamado Cliente.

  • Teremos 2 projetos com referência;
  • Uma conexão manual com o Sql Server;
  • Utilizaremos o Docker para gerenciar os Containers;
  • Usar um container do Docker para utilizar os comandos do Sql Server.

Precisaremos ter as ferramentas abaixo instaladas:

  • Visual Studio;
  • Docker;
  • Instância do Sql Server para Linux no Docker;
  • Azure Data Studio.

Azure Data Studio - Preparação da Base de dados

Abrir o Azure Data Studio :

  • Clicar no link New conection;
  • Em server, digitar localhost;
  • Em username, digitar o nome do usuário;
  • Em password, digitar a senha.
  • Clicar em conect.

Feita a conexão, criaremos uma nova base de dados

      
       CREATE DATABASE AulaAPI
       
    

Vamos selecionar a base de dados que acabamos de criar e selecionar new Query para criar uma nova tabela.

      
       CREATE TABLE Clientes (
        Id int NOT NULL IDENTITY(1,1),
        Nome varchar(50) NOT NULL,
        Endereco varchar(100),
        Telefone varchar(20),
        PRIMARY KEY(id)
       );
       
    

Vamos inserir dados na tabela de clientes.

      
        INSERT INTO Clientes(nome, endereco, telefone) VALUES('Danilo', 'Rua teste 123', '+55 11 87822-88338');
        INSERT INTO Clientes(nome, endereco, telefone) VALUES('Lana', 'Rua teste 123', '+55 11 87822-88338');
       
    

Visual Studio - Criar novo projeto

Vamos criar um novo projeto API no Visual Studio:

  • Abrir o VSStudio -> New -> API;
  • Nome do projeto: APIAulaYoutube;
  • Clicar em create.

O VSStudio automaticamente cria um projeto modelo de API, mas nós iremos criar um novo projeto do tipo Library onde estarão todos os nossos modelos.

  • New-> Project-> Library;
  • Nome do projeto: Models;
  • Solution Name: APIAulaYoutube;
  • Clicar em create.

Criaremos uma classe chamada Conexao, que irá fazer a conexão do banco de dados e será uma classe Singleton, onde não haverá criação de dados nesta classe. Teremos um construtor vazio com uma propriedade chamada Dados e terá os dados da conexão.

      
      using System;

      namespace Models 
      {
        public class Conexao 
        {
          private Conexao(){}
          public static string Dados { get; set;}
        }
      }
       
    

Criaremos uma classe chamada Cliente.

      
      using System;
      using System.Collections.Generic;
      using System.Data.SqlClient;

      namespace Models 
      {
        public class Cliente 
        {
          private Cliente(){}
          public int Id{ get; set;}
          public string Nome{ get; set;}
          public string Telefone{ get; set;}
          public string Endereco{ get; set;}

          public static List< Cliente> Todos()
          {
            var lista = new List< Cliente>(); 

            SqlConection conn = new SqlConnection(Conexao.Dados);
            conn.Open();

            SqlCommand cmd = new SqlCommand("select * FROM clientes", conn);

            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
              list.Add(new Cliente 
              {
                Id = Convert.ToInt32(reader["Id"]),
                Nome = Convert.ToInt32(reader["Nome"].ToString()),
                Telefone = Convert.ToInt32(reader["Telefone"].ToString()),
                Endereco = Convert.ToInt32(reader["Endereco"].ToString()),
              });
            }
            cnn.Close();
            conn.Dispose();
            cmd.Dispose();
            return lista;
          }
        }
      }
       
    

Criaremos uma nova classe referente a apresentação da API.

      
      using System;
      using System.Collections.Generic;

      namespace APIAulaYoutube 
      {
        public class Apresentacao 
        {
          private Apresentacao()
          {
            rotas = new List< String>();
            rotas.Add("/clientes");
          }

          private  List< String> rotas() { get; set;}
          public  string Mensagem { get { return "Seja bem vindo a nossa API"; } }
          public  List< String> rotas() { get { return this.rotas; } }
        
        }
      }
       
    

No arquivo launchsettings.json, vamos configurar para que a pagina inicial seja a home, deixando a propriedade launchUrl vazia.

    
    {
      "profiles":{
        "IIS Express": {
          "commandName": "IISExpress"
          "launchBrowser": true,
          "launchUrl": ""
          "enviromentVariables": {
            "ASPNETCORE_ENVIRONMENT":"Development"
          }
        },
        "APIAulaYoutube": {
          "commandName": "Project"
          "launchBrowser": true,
          "launchUrl": ""
          "enviromentVariables": {
            "ASPNETCORE_ENVIRONMENT":"Development"
          },
          "applicationUrl":"https://localhost:5001;https://localhost:5000"
        }
      }
    }
     
  

Criar rota de Apresentação

Criaremos um novo controller, selecionando menu Adicionar->new scaffolding-> API Controller Empty e o nome da controller será Home.

    
      namespace APIAulaYoutube.Controllers 
      {
        [Route("")]
        [ApiController] 
        public class HomeController : ControllerBase 
        {
          public class Apresentação Index() 
          {
            return new Apresentacao();
          }
        }
      }
    
     
  

Criar rota de Clientes

Iremos fazer a rota de clientes.

Adicionaremos a referência do projeto models no projeto APIAulaYoutube.

    
      using Models;
      namespace APIAulaYoutube.Controllers 
      {
        [Route("clientes")]
        [ApiController] 
        public class ClientesController : ControllerBase 
        {
          [HttpGet]
          [Route("Lista")]
          [Route("")]
          public List< Cliente> Index() 
          {
            return Cliente.Todos();
          }
        }
      }
     
  

Configurar conexão com Banco de dados

Vamos fazer a conexão com o banco de dados no arquivo appsettings.

    
    {
      "ConnectionStrings": {
        "MinhaConexao": "Server=localhost;Database=AulaAPI;Uid=sa;Pwd=!1#2a3d4c5g6v"
      }   
    }
     
  

Na classe Startup, vamos configurar a string de conexão que criamos acima.

    
    namespace APIAulaYoutube 
    {
      public class Startup 
      {
        public Startup(IConfiguration configuration)
        {
          Configuration = configuration;
        }
        public IConfiguration Configuration{ get;}

        public void ConfigureServices(IServiceCollection services)
        {
          Conexao.Dados = Configuration.GetConnectionString("MinhaConexao");
          services.AddControllers();
        }
      }
    }
     
  

Retorno API- arquivo JSON

Ao executar a aplicação e digitar a url: localhost:5001/clientes, teremos o retorno de um arquivo json, com os dados dos clientes que cadastramos no banco de dados SqlServer.

    
      [
        {
          "id":1,
          "nome":"Danilo",
          "telefone": "+55 11 87822-88338",
          "endereco": "Rua teste 123"
        },
        {
          "id":2,
          "nome":"Lana",
          "telefone": "+55 11 87822-88338",
          "endereco": "Rua teste 123"
        }
      ]
     
  

API .Net Core

Nesta aula iremos estudar a API do .Net Core, iremos criar uma API utilizando o ambiente Unix com Docker e SQL Server.

Próximas Aulas:
assinaturaAssine nossa Comunidade

API .Net Core

Na aula de hoje iremos utilizar o .net core para construir uma API em ambiente Unix. Esta API terá uma documentação e um model chamado Cliente.

  • Teremos 2 projetos com referência;
  • Uma conexão manual com o Sql Server;
  • Utilizaremos o Docker para gerenciar os Containers;
  • Usar um container do Docker para utilizar os comandos do Sql Server.

Precisaremos ter as ferramentas abaixo instaladas:

  • Visual Studio;
  • Docker;
  • Instância do Sql Server para Linux no Docker;
  • Azure Data Studio.

Azure Data Studio - Preparação da Base de dados

Abrir o Azure Data Studio :

  • Clicar no link New conection;
  • Em server, digitar localhost;
  • Em username, digitar o nome do usuário;
  • Em password, digitar a senha.
  • Clicar em conect.

Feita a conexão, criaremos uma nova base de dados

      
       CREATE DATABASE AulaAPI
       
    

Vamos selecionar a base de dados que acabamos de criar e selecionar new Query para criar uma nova tabela.

      
       CREATE TABLE Clientes (
        Id int NOT NULL IDENTITY(1,1),
        Nome varchar(50) NOT NULL,
        Endereco varchar(100),
        Telefone varchar(20),
        PRIMARY KEY(id)
       );
       
    

Vamos inserir dados na tabela de clientes.

      
        INSERT INTO Clientes(nome, endereco, telefone) VALUES('Danilo', 'Rua teste 123', '+55 11 87822-88338');
        INSERT INTO Clientes(nome, endereco, telefone) VALUES('Lana', 'Rua teste 123', '+55 11 87822-88338');
       
    

Visual Studio - Criar novo projeto

Vamos criar um novo projeto API no Visual Studio:

  • Abrir o VSStudio -> New -> API;
  • Nome do projeto: APIAulaYoutube;
  • Clicar em create.

O VSStudio automaticamente cria um projeto modelo de API, mas nós iremos criar um novo projeto do tipo Library onde estarão todos os nossos modelos.

  • New-> Project-> Library;
  • Nome do projeto: Models;
  • Solution Name: APIAulaYoutube;
  • Clicar em create.

Criaremos uma classe chamada Conexao, que irá fazer a conexão do banco de dados e será uma classe Singleton, onde não haverá criação de dados nesta classe. Teremos um construtor vazio com uma propriedade chamada Dados e terá os dados da conexão.

      
      using System;

      namespace Models 
      {
        public class Conexao 
        {
          private Conexao(){}
          public static string Dados { get; set;}
        }
      }
       
    

Criaremos uma classe chamada Cliente.

      
      using System;
      using System.Collections.Generic;
      using System.Data.SqlClient;

      namespace Models 
      {
        public class Cliente 
        {
          private Cliente(){}
          public int Id{ get; set;}
          public string Nome{ get; set;}
          public string Telefone{ get; set;}
          public string Endereco{ get; set;}

          public static List< Cliente> Todos()
          {
            var lista = new List< Cliente>(); 

            SqlConection conn = new SqlConnection(Conexao.Dados);
            conn.Open();

            SqlCommand cmd = new SqlCommand("select * FROM clientes", conn);

            SqlDataReader reader = cmd.ExecuteReader();

            while (reader.Read())
            {
              list.Add(new Cliente 
              {
                Id = Convert.ToInt32(reader["Id"]),
                Nome = Convert.ToInt32(reader["Nome"].ToString()),
                Telefone = Convert.ToInt32(reader["Telefone"].ToString()),
                Endereco = Convert.ToInt32(reader["Endereco"].ToString()),
              });
            }
            cnn.Close();
            conn.Dispose();
            cmd.Dispose();
            return lista;
          }
        }
      }
       
    

Criaremos uma nova classe referente a apresentação da API.

      
      using System;
      using System.Collections.Generic;

      namespace APIAulaYoutube 
      {
        public class Apresentacao 
        {
          private Apresentacao()
          {
            rotas = new List< String>();
            rotas.Add("/clientes");
          }

          private  List< String> rotas() { get; set;}
          public  string Mensagem { get { return "Seja bem vindo a nossa API"; } }
          public  List< String> rotas() { get { return this.rotas; } }
        
        }
      }
       
    

No arquivo launchsettings.json, vamos configurar para que a pagina inicial seja a home, deixando a propriedade launchUrl vazia.

    
    {
      "profiles":{
        "IIS Express": {
          "commandName": "IISExpress"
          "launchBrowser": true,
          "launchUrl": ""
          "enviromentVariables": {
            "ASPNETCORE_ENVIRONMENT":"Development"
          }
        },
        "APIAulaYoutube": {
          "commandName": "Project"
          "launchBrowser": true,
          "launchUrl": ""
          "enviromentVariables": {
            "ASPNETCORE_ENVIRONMENT":"Development"
          },
          "applicationUrl":"https://localhost:5001;https://localhost:5000"
        }
      }
    }
     
  

Criar rota de Apresentação

Criaremos um novo controller, selecionando menu Adicionar->new scaffolding-> API Controller Empty e o nome da controller será Home.

    
      namespace APIAulaYoutube.Controllers 
      {
        [Route("")]
        [ApiController] 
        public class HomeController : ControllerBase 
        {
          public class Apresentação Index() 
          {
            return new Apresentacao();
          }
        }
      }
    
     
  

Criar rota de Clientes

Iremos fazer a rota de clientes.

Adicionaremos a referência do projeto models no projeto APIAulaYoutube.

    
      using Models;
      namespace APIAulaYoutube.Controllers 
      {
        [Route("clientes")]
        [ApiController] 
        public class ClientesController : ControllerBase 
        {
          [HttpGet]
          [Route("Lista")]
          [Route("")]
          public List< Cliente> Index() 
          {
            return Cliente.Todos();
          }
        }
      }
     
  

Configurar conexão com Banco de dados

Vamos fazer a conexão com o banco de dados no arquivo appsettings.

    
    {
      "ConnectionStrings": {
        "MinhaConexao": "Server=localhost;Database=AulaAPI;Uid=sa;Pwd=!1#2a3d4c5g6v"
      }   
    }
     
  

Na classe Startup, vamos configurar a string de conexão que criamos acima.

    
    namespace APIAulaYoutube 
    {
      public class Startup 
      {
        public Startup(IConfiguration configuration)
        {
          Configuration = configuration;
        }
        public IConfiguration Configuration{ get;}

        public void ConfigureServices(IServiceCollection services)
        {
          Conexao.Dados = Configuration.GetConnectionString("MinhaConexao");
          services.AddControllers();
        }
      }
    }
     
  

Retorno API- arquivo JSON

Ao executar a aplicação e digitar a url: localhost:5001/clientes, teremos o retorno de um arquivo json, com os dados dos clientes que cadastramos no banco de dados SqlServer.

    
      [
        {
          "id":1,
          "nome":"Danilo",
          "telefone": "+55 11 87822-88338",
          "endereco": "Rua teste 123"
        },
        {
          "id":2,
          "nome":"Lana",
          "telefone": "+55 11 87822-88338",
          "endereco": "Rua teste 123"
        }
      ]