Nesta aula iremos estudar o verbo POST do HTTP em uma API .Net Core, iremos utilizar a API feita na aula anterior incrementando funções.
O método post é utilizado para enviar informações ao servidor para serem cadastradas.
Enviamos uma requisição com o método POST e o servidor retorna um código de status da cadeia 200, que tem o range entre 200 e 299.
Na aula passada, nós fizemos a busca de dados na tabela de clientes, através do método GET, retornando-os através de arquivo JSON.
O objetivo da aula de hoje é enviar os dados do cliente para ser cadastrado na tabela de clientes através de API, utilizando o método POST.
Utilizamos o FromBody e o método HttpPost para capturar as informações do objeto cliente.
using Models;
namespace APIAulaYoutube.Controllers
{
[Route("clientes")]
[ApiController]
public class ClientesController : ControllerBase
{
[HttpPost]
[Route("criar")]
public Cliente Criar([FromBody] Cliente cliente)
{
return cliente.Salvar();
}
}
}
Criaremos o método Salvar para inserir um registro de clientes no banco de dados.
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 Cliente Salvar()
{
SqlConection conn = new SqlConnection(Conexao.Dados);
conn.Open();
SqlCommand cmd = new SqlCommand("insert into clientes(nome,telefone,endereco) values (@nome,@endereco,@telefone)", conn);
cmd.Parameters.Add(@nome);
cmdparameters["@nome"].Value = this.Nome;
cmd.Parameters.Add(@telefone);
cmdparameters["@telefone"].Value = this.Telefone;
cmd.Parameters.Add(@endereco);
cmdparameters["@endereco"].Value = this.Endereco;
cmd.ExecuteNonQuery();
}
}
}
Podemos também criar uma procedure no SqlServer para inserir os as informações do cliente.
Utilizamos o comando @@identity, que irá retornar o id do cliente cadastrado.
create procedure CriarCliente(
@nome varchar(50),
@telefone varchar(20),
@endereco varchar(100)
)
as
BEGIN
insert into clientes(nome, telefone,endereco) values(@nome,@endereco,@telefone)
select @@identity
END
No método salvar, iremos alterar o SqlCommand para chamar a procedure CriarCliente, para retornarmos o id através do comando ExecuteScalar.
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 Cliente Salvar()
{
using(SqlConection conn = new SqlConnection(Conexao.Dados))
{
conn.Open();
SqlCommand cmd = new SqlCommand("CriarCliente @nome,@endereco,@telefone ", conn);
cmd.Parameters.Add(@nome, SqlDbType.VarChar);
cmdparameters["@nome"].Value = this.Nome;
cmd.Parameters.Add(@telefone, SqlDbType.VarChar);
cmdparameters["@telefone"].Value = this.Telefone;
cmd.Parameters.Add(@endereco, SqlDbType.VarChar);
cmdparameters["@endereco"].Value = this.Endereco;
this.id = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
}
return this;
}
}
Para fazermos o teste da criação do registro, vamos utilizar um programa chamado Advanced Rest Client
Criaremos uma requisição do tipo POST com a url https://localhost:5001/clientes/criar.
Na aba Body, vamos emviar os dados que queremos cadastrar em JSON.
{
"nome":"Lana Santos",
"telefone": "123421",
"endereco": "Rua teste 123 mais 134"
},
Nesta aula iremos estudar o verbo POST do HTTP em uma API .Net Core, iremos utilizar a API feita na aula anterior incrementando funções.
O método post é utilizado para enviar informações ao servidor para serem cadastradas.
Enviamos uma requisição com o método POST e o servidor retorna um código de status da cadeia 200, que tem o range entre 200 e 299.
Na aula passada, nós fizemos a busca de dados na tabela de clientes, através do método GET, retornando-os através de arquivo JSON.
O objetivo da aula de hoje é enviar os dados do cliente para ser cadastrado na tabela de clientes através de API, utilizando o método POST.
Utilizamos o FromBody e o método HttpPost para capturar as informações do objeto cliente.
using Models;
namespace APIAulaYoutube.Controllers
{
[Route("clientes")]
[ApiController]
public class ClientesController : ControllerBase
{
[HttpPost]
[Route("criar")]
public Cliente Criar([FromBody] Cliente cliente)
{
return cliente.Salvar();
}
}
}
Criaremos o método Salvar para inserir um registro de clientes no banco de dados.
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 Cliente Salvar()
{
SqlConection conn = new SqlConnection(Conexao.Dados);
conn.Open();
SqlCommand cmd = new SqlCommand("insert into clientes(nome,telefone,endereco) values (@nome,@endereco,@telefone)", conn);
cmd.Parameters.Add(@nome);
cmdparameters["@nome"].Value = this.Nome;
cmd.Parameters.Add(@telefone);
cmdparameters["@telefone"].Value = this.Telefone;
cmd.Parameters.Add(@endereco);
cmdparameters["@endereco"].Value = this.Endereco;
cmd.ExecuteNonQuery();
}
}
}
Podemos também criar uma procedure no SqlServer para inserir os as informações do cliente.
Utilizamos o comando @@identity, que irá retornar o id do cliente cadastrado.
create procedure CriarCliente(
@nome varchar(50),
@telefone varchar(20),
@endereco varchar(100)
)
as
BEGIN
insert into clientes(nome, telefone,endereco) values(@nome,@endereco,@telefone)
select @@identity
END
No método salvar, iremos alterar o SqlCommand para chamar a procedure CriarCliente, para retornarmos o id através do comando ExecuteScalar.
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 Cliente Salvar()
{
using(SqlConection conn = new SqlConnection(Conexao.Dados))
{
conn.Open();
SqlCommand cmd = new SqlCommand("CriarCliente @nome,@endereco,@telefone ", conn);
cmd.Parameters.Add(@nome, SqlDbType.VarChar);
cmdparameters["@nome"].Value = this.Nome;
cmd.Parameters.Add(@telefone, SqlDbType.VarChar);
cmdparameters["@telefone"].Value = this.Telefone;
cmd.Parameters.Add(@endereco, SqlDbType.VarChar);
cmdparameters["@endereco"].Value = this.Endereco;
this.id = Convert.ToInt32(cmd.ExecuteScalar());
conn.Close();
}
return this;
}
}
Para fazermos o teste da criação do registro, vamos utilizar um programa chamado Advanced Rest Client
Criaremos uma requisição do tipo POST com a url https://localhost:5001/clientes/criar.
Na aba Body, vamos emviar os dados que queremos cadastrar em JSON.
{
"nome":"Lana Santos",
"telefone": "123421",
"endereco": "Rua teste 123 mais 134"
},