Um microblog usando Protheus - Rest Server, parte 1, o que será esta série
Tags: advpl, rest, protheus, api
Published: 2020-11-22 18:20:56

# 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](https://tdn.totvs.com/pages/viewpage.action?pageId=75268866)
link 2: [Exemplo simples](https://medium.com/totvsdevelopers/rest-no-protheus-b%C3%A1sico-do-b%C3%A1sico-a4b4431a4e3e)
link 3: [Exemplo mais complexo](https://medium.com/@toledo.anderson/cria%C3%A7%C3%A3o-de-servi%C3%A7os-rest-no-protheus-utilizando-framework-bf758165fe5c)

# 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](https://tdn.totvs.com/display/framework/Entendendo+as+novidades+do+REST).

# 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](https://www.learnenough.com/ruby-on-rails-6th-edition-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.