Manipulando dados na web usando Delphi MVC Framework e DAO – Tutorial

Resumo:

Veja em cinco passos, como fazer um servidor DelphiMVC Framework – REST publicar e manipular registro de um banco de dados de uma maneira extremamente simples.

Introdução:

Este tutorial usará o padrão MVC (Model View Controller) e o padrão DAO (Data Access Object) para manipular os dados da tabela de exemplo Customer dentro do banco de dados MySQL e mostra como devemos publicar os métodos do REST (GET, POST, PUT e DELETE).

Observação: eu escolhi usar a técnica do DAO, poque ele nos permite manipular os dados de maneira orientada a objeto. Ele também é fácil para ser ser compreendido e não haverá a necessidade de instalar um Framework de persistência como Aurelius ou Marshmallow.

Nota 1:
MVC é uma arquitetura de software que faz a separação da aplicação em 3 camadas. A camada de interação do usuário(view), a camada de manipulação dos dados(model) e a camada de controle(controller). A arquitetura MVC foi criada nos anos 80 na Xerox Parc, por Trygve Reenskaug, que iniciou em 1979 o que viria a ser o nascimento do padrão de projeto MVC. A implementação original foi descrita no artigo “Applications Programming in Smalltalk-80: How to use Model-View-Controller” .
Nota 2:
DAO é uma técnica que nos permite de maneira muito simples converter dados relacionais em objetos, encapsulando e ocultando do programador os comandos SQL em métodos privados.

O projeto será simples e conterá os seguintes unidades:

WebMolule.pas Classe responsável por gerenciar o servidor DelphiMVC
Connection.Mysql.pas Clase responsável pela conexao com o MySQL
Customer.Controller.pas Classe Controller do MVC
Customer.Entity.pas Classe MODEL do MVC para representar a estrutura da tabela Customer
Customer.DAO.pas Classe MODEL responsável pela persistência e leitura dos dados da tabela Customer.

Vamos começar!

Primeiro passo – Criação do banco de dados

Acesso o MySQL e execute o script para criação do banco de dados e tabela customer;

create database demo;
CREATE TABLE IF NOT EXISTS demo.customer (
id_custmer INT NOT NULL AUTO_INCREMENT,
name VARCHAR(45) NOT NULL,
address VARCHAR(45) NOT NULL,
city VARCHAR(45) NOT NULL,
PRIMARY KEY (id_custmer))
ENGINE = InnoDB;

Segundo passo – Criação do Servidor

Abra o Delphi e crie um novo projeto DelphiMVC – Framework pelo wizard;

File->New->Other

clique em OK e configure a tela do wizard como mostrado:

Informe o nome da classe TWebModule.
maque apenas as opções:
(x) Create Controller unit.
(x) Create Sample CRUD Actions.
informe nome do Controlador: TCustomerController.
informe a porta 8080.

Salve seu projeto com o seguintes nomes com os seguintes nomes:

Unit1 (classe TCustomerController) = Customer.Controller.pas
Unit2 (classe TWebModule1) = WebMolule.pas
Project1 = DemoDelphiMVCDAO

Terceiro Passo – Criação das clase Entity

Adicione uma nova unidade ao projeto, e salve o arquivo com o nome: Customer.Entity.pas;

apos salvar vamos agora criar a classe chamadas TCustomerEntity.

A classe TCustomerEntity e a estrutura representacional da tabela customer e deve conter todos os campos da tabela customer do MySQL;

Quarto Passo – Criação da classe de acesso ao MySQL e da Classe DAO

Adicione um datamodule ao projeto e salve o arquivo com o nome: Data.Util.pas

Nota 3: Usaremos o componente UniDAC para conectar-se ao MySQL, sinta-se livre para usar qualquer outro componente de acesso ao banco de dados.  

Adicione 4 componentes do UniDAC ao Datamodule.

Conexao: TUniConnection;
MySQLUniProvider1: TMySQLUniProvider;
CommandSQL: TUniSQL;
Query: TUniQuery;

Nota 4: Usaremos o componente  TUniSQL para executar os comandos Insert, Update e Delete.

Nota 5: Usaremos o componente TUniQuery para executar o comando Select.

Configure os seus objetos:

object conexao: TUniConnection
ProviderName = 'MySQL'
Port = 3306
Database = 'demo'
Username = 'root'
Server = 'localhost'
end
object query: TUniQuery
Connection = conexao
end
object CommandSQL: TUniSQL
Connection = conexao
end

Agora criaremos o DAO

Adicione uma mais uma unidade ao projeto, e salve o arquivo com o nome: Customer.DAO.pas;

após salvar vamos, referenciar as classes Data.Util, Customer.Entity e criar a classe chamadas TCustomerDAO com os seguintes métodos:.

Quinto Passo – programando o Controller.

Abra a unidade Customer.Controller.pas

Veja que os métodos do REST ja foram criados pelo seu wizard,
e todas as rotas e Verbos HTTP já estão pre-configurados nas anotações de cada método.

Adicione na unidade Customer.Controller as seguintes classes:

Agora implemente os métodos, conforme o mostrado abaixo.

Nota muito importante!  a função Context.Request.BodyAs<T> é uma função genérica do DelphiMVC, que  converte o conteúdo da requisição JSON para o tipo <T>.
No nosso caso, o JSON está sendo convertido automaticamente para a entidade definida na classe Customer.Entity.TCustomerEntity.

Tudo esta pronto agora compile.

Repare que o servidor esta respondendo as requisições na porta 8080,

Para testarmos o sistema recomendo a ferramenta Postman

veja abaixo a sequencia de cada teste:

Listando todos os clientes!
GET: http://localhost:8080/api/customer

Listando o cliente id = 1
GET: http://localhost:8080/api/customer/1

Criando um novo cliente:
POST : http://localhost:8080/api/customer

{
“Name”: “novo nome para o cliente 2”,
“Address”: “Add1”,
“city”: “city1”
}

{
“Result”: “CreateCustomer”
}

Atualizando o novo cliente 2:
PUT: http://localhost:8080/api/customer/2

{
“IdCustomer”: 2,
“Name”: “novo nome para o cliente 2”,
“Address”: “Add1”,
“city”: “city1”
}

{
“Result”: “UpdateCustomer”
}

Excluindo o cliente 2.

DELETE: http://localhost:8080/api/customer/2

Conclusão

Vimos neste post, um método para criar de maneira bem simples e organizada, um servidor web que permite publicar os dados de seus sistema diretamente para aplicações na internet, agora basta fazer seu cliente para poder consumir seus recursos REST.
no próximo artigo vou fazer um app com Delphi , e um cliente html que consumira nossos serviços.

Ficou com duvidas. não entendeu, comenta que eu logo respondo!

Abraços e até a próxima!

baixe aqui o projeto

Um comentário em “Manipulando dados na web usando Delphi MVC Framework e DAO – Tutorial

Adicione o seu

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

WordPress.com.

Acima ↑

%d blogueiros gostam disto: