Há alguns dias fui convidado a participar de uma ação bem bacana que era a criação de um APP para os pacientes de uma clínica médica.
Como sempre deixei claro a ideia do blog e dos vídeos é compartilhar alguns aprendizados e experiências vividas por mim em projetos que tenha participado, então vamos compartilhar!
Situação atual
Atualmente a clínica conta com um software de arquitetura cliente-servidor com banco de dados Firebird 2.5, que atende perfeitamente a gestão de pacientes, exames, etc.
Novo Projeto
Para a criação no projeto solicitado, optei por manter o software que hoje opera na clínica, e paralelamente a ele inseri um servidor Datasnap Rest, que seria exposto à internet proporcionando assim o acesso de diferentes dispositivos, inclusive nosso App Mobile requisitado pela clínica.
Estudos sobre Rest
Um ótimo material que orientou meu estudo sobre REST foi o vídeo: Webinar Design de APIs RESTful, com duração de aproximadamente 1h, o conteúdo transmitido carrega detalhes interessantes e imprescindíveis a quem quer se aventurar no universo REST.
Aqui abro um enorme parêntese para agradecer aos amigos Kelver Merlotti, Cesar Romero e Marcelo Varela, que participaram comigo dessa discussão ampliando os questionamentos e mirando a solução adotada. Obrigado senhores!
Padrão REST
Não vou explicar aqui sobre REST, a minha ideia é chamar sua atenção para algo que pode gerar confusão.
Padrão Datasnap Rest
O Datasnap faz um mapeamento da URI da Classe e URI do Recurso de forma automática.
URI ou Identificador Uniforme de Recursos ou Uniform Resource Identifier (em inglês).
Fonte: http://docwiki.embarcadero.com/RADStudio/Seattle/en/DataSnap_REST
Analisando um pouco mais de afundo, percebemos que o Datasnap então trata os Métodos HTTP como:
Rest Padrão X Rest Datasnap
Durante meus estudos sobre o padrão REST, pude notar que há uma diferença entre o REST padrão e o REST automaticamente mapeado pelo Datasnap.
Conclusão
Para implantar o padrão REST via Delphi Datasnap, de acordo com a documentação “universal” de Rest, você precisa inverter as instruções dentro dos métodos put e post, de forma que no Put você codifique a instrução de update e no Post você codifique a instrução de insert. Fazendo isso o mapeamento padrão do Datasnap como mencionei acima é invertido e passa a funcionar como descrito na imensa maioria dos documentos e fontes de estudo do padrão REST.
Para melhor explicar o que estou dizendo, veja o breve vídeo abaixo:
Você já tinha percebido esse detalhe?
Deixe aí seu cometário e até a próxima!