Nesta aula iremos estudar a API do .Net Core, iremos criar uma API utilizando o ambiente Unix com Docker e SQL Server.
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.
Precisaremos ter as ferramentas abaixo instaladas:
Abrir o Azure Data Studio :
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');
Vamos criar um novo projeto API no Visual Studio:
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.
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"
}
}
}
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();
}
}
}
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();
}
}
}
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();
}
}
}
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"
}
]
Nesta aula iremos estudar a API do .Net Core, iremos criar uma API utilizando o ambiente Unix com Docker e SQL Server.
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.
Precisaremos ter as ferramentas abaixo instaladas:
Abrir o Azure Data Studio :
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');
Vamos criar um novo projeto API no Visual Studio:
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.
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"
}
}
}
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();
}
}
}
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();
}
}
}
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();
}
}
}
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"
}
]