APIs RESTful com Delphi e DataSnap – Parte III

APIS RESTful com Delphi e DataSnap - DevSpace
APIS RESTful com Delphi e DataSnap

Última atualização em 2 de setembro de 2022 por Willian Tuttoilmondo

Recapitulando

Como vimos até a parte II do nosso artigo, o processo de criação de APIs RESTful com Delphi e DataSnap é um processo simples, mas é bem extenso. Na parte I vimos como criar o projeto de um módulo para o servidor Web Apache. Já na parte II vimos como implementar uma API RESTful utilizando padrões de projeto como SingletonAbstract Factory, o que já discutimos em outro momento e que pode ser revisto aqui. Agora, na parte III, veremos como montar um ambiente de testes – que também pode ser usado como ambiente de produção – para nosso projeto.

Durante o processo, traremos algumas dicas básicas sobre esse ambiente e, claro, discutiremos o porquê dessa escolha. Sendo assim, vamos lá!

APIs RESTful com Delphi e DataSnap – Preparando o ambiente

Após compilarmos com sucesso nosso projeto, devemos agora partir para a fase de testes. Como utilizamos, neste caso, a plataforma Windows 64-bit como base, vamos guiá-lo na construção de um ambiente para esta plataforma. Caso você tenha optado por compilar nosso projeto para um ambiente Linux, podem existir diferentes formas de construir este ambiente dependendo da distribuição escolhida, ficando a cargo de vocês verificarem a melhor forma de fazê-lo.

Já que estamos definindo esta etapa como fundamental, é importante que ela seja bem executada para que nosso projeto funcione de forma plena. Qualquer descuido pode gerar erros ou problemas relacionados à execução do projeto.

Sendo assim, vamos colocar a mão na massa logo.

Escolhendo o container

Para que nossas APIs RESTful com Delphi e DataSnap funcionem perfeitamente, é importante escolher corretamente o container que irá abrigá-las. Se você seguiu todos os passos que foram descritos na parte I deste artigo, você criou um módulo Apache para a versão 2.4 do servidor, para a plataforma Windows 64-bit. Sendo assim, devemos optar pela forma mais simples e rápida de montarmos o ambiente.

Aqui, podemos optar por fazer o download direto do servidor Apache 2.4 no site do desenvolvedor (até o fechamento desse artigo a versão disponível é a 2.4.48). Podemos, também, fazer uso de uma opção mais simples, como os projetos WAMP ou XAMPP, já famosos pela sua facilidade de implantação. Já eu recomendo o projeto Laragon, mais completo e fácil de configurar. O Laragon conta com elementos interessantes para seu ambiente, como certificados SSL auto assinados para testes no protocolo HTTPS, o servidor de banco de dados chave-valor Redis – que pode ser usado como auxiliar para aumentar o desempenho geral da nossa API -, além de contar com os servidores MySQLNginx. Sendo assim, podemos definir nosso querido elefantinho como nosso container para testes.

Baixando e instalando o ambiente

Como vamos trabalhar com o Laragon, você pode baixá-lo aqui gratuitamente. Detalhes sobre sua instalação, que conta com um wizard que facilita bastante nosso processo, podem ser encontrados no site do próprio projeto. Mas, em suma, as opções básicas de instalação nos atendem tranquilamente. Após a instalação de nosso ambiente, precisamos fazer pequenos ajustes na sua configuração. E isso não leva nem três minutos…

Configurando nosso ambiente

Com nosso sistema instalado, vamos ajustá-lo para que ele possa ser usado como ambiente de testes. Todas as configurações do ambiente podem ser executadas diretamente na tela principal do Laragon, de forma simples e rápida. Para isso, basta acessá-la através do menu Iniciar do Windows.

APIs RESTful com Delphi e Datasnap - Laragon
APIs RESTful com Delphi e Datasnap – Laragon

Antes de clicarmos no botão Iniciar Tudo, precisamos fazer algumas configurações básicas. No canto superior direito da tela principal você encontra três ícones: um h, que nos leva para a edição do arquivo hosts do Windows, um ?, que nos leva para o site de ajuda e fórum do projeto, e uma engrenagem, a qual nos leva para a tela de configuração geral do ambiente.

Ao clicarmos nela, uma nova tela será aberta. É nela que faremos nossa configuração inicial e onde poderemos ajustar detalhes básicos para que tudo funcione corretamente. Vale lembrar que esta nova tela não tem nenhum botão para salvar as alterações, assim como também não tem nenhum botão para restaurar as configurações ao seu padrão. Caso alteremos alguma coisa indevidamente, deveremos lembrar o que foi alterado para restabelecermos a configuração anterior. Contudo, neste guia, deixaremos as configurações nas opções mais básicas, sem muitas alterações que possam impactar diretamente sobre nosso ambiente de testes.

APIs RESTful com Delphi e Datasnap - Laragon - Configurações gerais
APIs RESTful com Delphi e Datasnap – Laragon – Configurações gerais

Já na tela de preferências, na aba General, podemos ver algumas das configurações com as quais trabalharemos. Eu costumo deixar as opções nesta tela como as indicadas na imagem que a representa, uma vez que prefiro que o Laragon inicie juntamente com o Windows e que ele seja responsável por iniciar todos os serviços configurados já em sua inicialização, caso eu reinicie minha máquina e esqueça que tenho que iniciá-los manualmente para que meu ambiente esteja disponível.

Já a escolha do idioma é apenas para que esta tela, assim como a tela principal, sejam traduzidas para o idioma selecionado. As demais configurações, Document RootDiretório de DadosCriar automaticamente os hosts virtuais estão mais ligadas ao desenvolvimento Web (primeira e terceira configurações) e ao servidor MySQL disponibilizado com o ambiente (segunda configuração).

APIs RESTful com Delphi e Datasnap - Laragon - Configurações de serviços
APIs RESTful com Delphi e Datasnap – Laragon – Configurações de serviços

Já na aba Serviços & Portas está o nosso foco. Aqui vamos configurar quais serviços serão iniciados com o Laragon, assim como suas portas. Eu, por padrão, deixei o Apache configurado na porta 80 (sua porta padrão HTTP), com SSL ativado e configurado na porta 443 (porta padrão HTTPS). Além disso, deixei o servidor MySQL ativo em sua porta padrão, mas isso não é necessário, caso você já tenha outro servidor MySQL instalado ou não queira usá-lo. Já as opções pelo Nginx e Memcached eu deixei desmarcadas, uma vez que não utilizo, neste momento, estes serviços. Já a opção pelo servidor Redis eu deixo habilitada, uma vez que ele pode ser utilizado para armazenar sessões e configurações das APIs RESTful com Delphi e DataSnap que desenvolvo profissionalmente. A porta escolhida é sua porta padrão, pois não há qualquer necessidade de mudá-la.

Já as abas Mail CatcherMail Sender, neste momento, não têm qualquer impacto sobre nosso projeto, então, por ora, não falaremos sobre elas. Mas caso alguém tenha qualquer curiosidade a respeito, é só dar uma olhada no site do projeto e descobrir como e porque configurá-las.

Implantando nossas APIs RESTful com Delphi e DataSnap

Como já configuramos nosso ambiente, podemos fazer o deploy do nosso módulo. Se você utilizou o diretório padrão de instalação (C:\laragon) para instalar nosso projeto, você precisará localizar o diretório C:\laragon\bin\apache\httpd-2.4.47-win64-VS16\modules, o qual será utilizado para colocarmos nosso módulo. Vale lembrar que este é o diretório válido até o fechamento deste artigo. Caso você tenha obtido uma versão mais nova do Laragon, a versão do Apache pode diferir, o que muda o caminho para o deploy dos módulos. De qualquer forma, uma busca rápida em sua máquina pode resolver esta questão.

Como dica no artigo anterior, sugeri que o módulo fosse compilado em modo Release. Se você seguiu esta dica, basta que você copie o arquivo C:\Projetos\Delphi\Datasnap\DSCalculator\bin\Win64\Release\mod_dscalculator.so para o diretório C:\laragon\bin\apache\httpd-2.4.47-win64-VS16\modules, onde os demais módulos do Apache estão abrigados. Contudo, isso não é suficiente para que nosso módulo seja reconhecido pelo servidor Apache. Para isso, precisamos alterar seu arquivo de configuração principal.

Com seu editor de arquivos de preferência (eu utilizo o Notepad++ por conta da sua versatilidade), edite o arquivo de configuração Apache httpd.conf, que pode ser encontrado no diretório C:\laragon\bin\apache\httpd-2.4.47-win64-VS16\conf. Nele, adicione as seguintes linhas, as quais podem ser encontradas no arquivo mod_dscalculator.dpr do nosso projeto:

APIs RESTful com Delphi e Datasnap - Laragon - Em operação
APIs RESTful com Delphi e Datasnap – Laragon – Em operação

Minha sugestão é que estas sejam adicionadas logo ao fim da seção LoadModule do arquivo, uma vez que isso mantém suas configurações organizadas, mas nada nos impede de colocá-las quem qualquer parte do arquivo. Com essas configurações básicas efetuadas, basta clicar no botão Iniciar Tudo, na tela principal do Laragon, e deixar a mágica acontecer.

Testando nosso projeto

Como já configuramos e iniciamos nosso ambiente de desenvolvimento e testes, chegou a hora de testar nossa API. Para os testes iniciais, até mesmo uma aba do seu browser favorito pode ser utilizada, já que estamos trabalhando com chamadas GET. No futuro, quando virmos outros métodos HTTP, como POSTPUTPATCH ou DELETE, recomendo o uso de ferramentas mais robustas, como o Postman ou o Advanced REST Client, ambos suportados pela Google.

Os exemplos de teste que se seguirão utilizam o Postman como base, uma vez que, por ele, consigo verificar, inclusive, o tempo que a API leva para responder a uma solicitação. Como primeiro teste, indiquei a rota https://localhost/api/dscalculator/v1/soma?a=20&b=5 e cliquei sobre o botão Send. Como resposta, a API me retornou um objeto JSON conforme mostrado abaixo:

Entendemos, por óbvio, que a soma entre os termo 20 e 5 resulte em 25. Como mostramos no artigo anterior, nossa rota principal foi configurada como /api/dscalculator/v1/[classe], onde [classe] indica qual classe utilizaremos para resolver nosso problema, neste caso, a classe soma. Em nossa URI, é possível notar um carácter ? logo após o nome da classe. Ele indica que nesta URI nós passaremos parâmetros através de uma Query String, a qual pode conter um ou mais parâmetros. Cada parâmetro deve obedecer a regra [nome]=[valor] e a junção dos demais parâmetros deve ser delimitada pelo carácter &. Sendo assim, nossa Query String a=20&b=5 indica que estamos passando os parâmetros a com valor 20b com valor 5.

APIs RESTful com Delphi e Datasnap - Postman - Teste de soma
APIs RESTful com Delphi e Datasnap – Postman – Teste de soma

Para as demais operações implementadas, basta trocar a classe soma por subtracaomultiplicacao ou divisao e deixar com que a API se preocupe em instanciar o objeto correspondente e responda com o resultado apropriado.

Testando os erros de rota

Quando implementamos nossa API, desenvolvemos alguns tratamentos para erros de rota em seu código. Dentre os tratamentos que fizemos, verificamos se a rota está completa, se o método GET é utilizado, se tem o número de termos correto, se contém uma Query String, se contém os parâmetros ab estipulados pela classe TOperacao e se eles contém valores numéricos. Neste ponto, podemos brincar com todos esses erros em nossos testes. Contudo, para não estender muito esta parte do artigo, mostrarei apenas um deles – um parâmetro não numérico fornecido na URI a ser interpretada pela API.

APIs RESTful com Delphi e Datasnap - Postman - Teste de erro
APIs RESTful com Delphi e Datasnap – Postman – Teste de erro

Tudo funcionando. E agora?

Como vimos, criar e disponibilizar APIs RESTful com Delphi e DataSnap é algo muito simples e rápido. Graças à arquitetura utilizada – SingletonAbstract Factory -, ampliar nossa API é algo simples e rápido. Tudo isso se deve a um planejamento prévio que foi elaborado antes de projeto começar, onde escolhemos a abordagem dele e como seria sua construção. Mas como este artigo já está bem longo, vamos deixar este detalhe para a parte IV da nossa série.

Com isso, cobriremos todos os aspectos deste projeto, desde sua concepção até sua manutenção. Então, até a próxima!

Sobre Willian Tuttoilmondo 12 Artigos
Arquiteto de software com mais de 25 anos de experiência em desenvolvimento de software, especialista em desenvolvimento multicamadas utilizando Embarcadero Delphi e NodeJS para o back-end e o próprio Delphi para o front-end. Usuário Linux desde 1998, é evangelista PostgreSQL, banco de dados no qual é especialista. Ocupa hoje a posição de arquiteto de software na TOTVS, a maior empresa de tecnologia do Brasil, além de ser sócio fundador da LT Digital Labs, empresa especializada em desenvolvimento e treinamentos.

1 Trackback / Pingback

  1. Construindo APIs RESTful nível 3 com Delphi e Datasnap

Faça um comentário

Seu e-mail não será publicado.


*