Introdução
Existem alguns conteúdos sobre o uso e criação de apis Rest usando o Protheus e a linguagem ADVPL, contudo pouco vai além da montagem básica dos métodos e operações padrões. Então, esta série tem o objetivo de fazer um microblog (aplicação tipo Twitter) usando o servidor Rest do Protheus com Advpl.
Para criar a api usando Advpl será necessário discutir e explicar alguns conceitos de como o Rest funciona e eventuais particularidades quando comparado com as linguagens e frameworks de mercado.
Alguns conteúdos com a documentação ou artigos com exemplos de uso são:
link 1: Web Services REST/Server
link 2: Exemplo simples
link 3: Exemplo mais complexo
O Rest no Protheus
A sequência de artigos e documentação no link 1 acima aborda de forma bem abrangente o "como funciona" e portanto para mais detalhes sugiro a leitura daquela documentação com atenção.
O Rest com Advpl no Protheus foi construído para suportar os seguintes métodos de REST sobre HTTP GET
, POST
, PUT
, DELETE
e OPTIONS
.
A construção dos serviços segue um pouco do modelo das classes de serviços para Web Services SOAP
e portanto, em Advpl são construídas classes WSRESTFUL
e com isso alguns métodos dessas classes irão responder pelos métodos HTTP conforme a URI definida. Estes elementos serão detalhados quando os serviços começarem a ser construídos.
A execução do Rest Server acontece em duas etapas: a recepção das requisições e validação de requisições e depois o processamento e resposta. Essa divisão é importante especialmente para entender o que pode ser melhorado com relação a tempo de resposta dos serviços. É possível observar estas etapas quando é ligado o log FWTRACELOG=1
na seção do ambiente configurado para o Rest Server.
Estes são os elementos importantes no momento, caso tenha criado curiosidade sobre algum dos temas mencionados sugiro procurar ou praticar o que é mencionado nas publicações.
Importante: será utilizado Advpl em boa parte dos exemplos e não TLPP, TLPP precisará da sua própria jornada e aplicação de exemplo. Sobre a diferença de Rest com Advpl e TLPP esta documentação é um excelente ponto de partida Rest Advpl x Rest 2.0.
O projeto do microblog
Uma das maneiras para aprender e exercitar situações complexas no desenvolvimento é com a escolha de soluções para serem desenvolvidas. No passado para entender e aprender como criar, desenvolver e principalmente entender os conceitos de desenvolvimento web utilizei Ruby on Rails
e segui o Rails Tutorial.
A aplicação desenvolvida é um clone do Twitter e com isso vários conceitos puderam ser abordados com relação ao construção da aplicação (CRUD simples, operações complexas, atualizações parciais e validações complexas, renderização de componentes, etc). Então utilizando como exemplo a aplicação do Rails Tutorial pensei em fazer o mesmo para apresentar a construção de uma Api Rest usando o Protheus.
O que terá no projeto?
O projeto irá conter duas entidades: Perfis e Publicações.
Estas duas entidades depois irão se relacionar e as funcionalidades disponibilizadas ao final serão:
login;
criação, atualização e inativação de perfil;
seguir perfil;
visualizar lista de seguidores e perfis seguidos;
criação de publicação;
associação de comentários;
filtro e ordenação de publicações;
A construção destes serviços envolverá passar pelo jeito tradicional (e que PRECISA mudar) de escrever programas Advpl para uma forma que permita isolar o negócio e eventualmente permitir evoluções de tecnologia que não envolva mexer na regra de de negócio.
Como acompanhar
O projeto no Github https://github.com/josimar-jr/microblog-protheus terá os códigos baseados em branches que serão mantidas conforme o projeto for evoluindo para permitir a comparação com versões anteriores dos programas.
Este projeto terá também alguns dos recursos base para conseguir replicar o ambiente utilizado e cada pessoa conseguir testar em ambiente de desenvolvimento.
Parte do desenvolvimento será apoiado com testes usando o Postman e por isso não será usado nenhum recurso de teste automatizado próprio para Protheus ou Advpl.
Até a próxima página dessa jornada.
Top comments (0)