Você está na página 1de 17

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

Share this:

 Twitter
 Facebook

Delphi MVC Framework - Criação de Servidores de Aplicação REST com DELPHIEm


"Delphi"

Um resumo sobreEm "DelphiMVCFramework"


Conecte sua aplicação com o MySQL usando o FireDACEm "FireDAC"

Você também pode gostar