O desenvolvimento de APIs permite a exposição e o consumo de dados com o objetivo da integração (front-end, portais, customizações, etc) ao back-end do produto Datasul, de maneira segura e padronizada.
A estrutura de integração de APIs Datasul suporta o envio de requisições no estilo de arquitetura REST com o desenvolvimento da regra de negócio em Progress.
Abaixo o fluxo das requisições via HTTP (DATASUL-REST) e formato de execução via Progress:

Esta funcionalidade está disponível para utilização conforme apresentado no quadro abaixo:
|
Existem 2 contextos definidos tanto para a Antiga arquitetura (Jboss) quanto para a Nova arquitetura (Tomcat, Wildfly). Estes contexto tem o objetivo de definir o acesso das requisições, ou seja, se são contextos de acessos internos (via menu) ou acessos externos (via APPs por exemplo).
|
O Guia de Implementação de API TOTVS define que o formato das URIs dos endpoints devem conter o nome do produto, o módulo, a versão da API e o recurso alvo da Modelo de acesso aos Contextos:/prg
/api
|
Para "publicar" a funcionalidade Progress ABL basta criar o programa (.p) com o seguinte caminho: fnd/api/v1/users.p (<módulo>/api/<versão API>/<recurso>.p). A sub-pasta "api" passa então a concentrar todas as funcionalidades de integração do módulo em questão:
O Guia de Implementação de API TOTVS define também que a troca de mensagens é feita (impreterivelmente) no formato JSON, e por conta disso, a troca de mensagens com as funcionalidades Progress também devem ser feitas nesse formato, mais especificamente por meio de um parâmetro de entrada e outro de saída do tipo LONGCHAR que devem ser devidamente tratados (parseados e formatados) pela funcionalidade utilizando as includes utilitárias disponibilizadas:
Abaixo um exemplo de recurso desenvolvido em Progress ABL para ser utilizado junto ao serviço de API:
No exemplo acima, temos as seguintes includes utilitárias:
|
Com o objetivo de facilitar a manipulação dos objetos JsonObject recebidos e enviados pela API Progress foram desenvolvidas algumas classes de utilitários:
|
O objeto JsonObject, recebido pela requisição no programa Progress conterá informações completas da requisição, desde informações do:
Com esta mensagem, o desenvolvedor poderá efetuar os devidos filtros e classes utilitárias necessárias. Exemplo de mensagem:
|
Login
Na Antiga Arquitetura para realizar o login no DATASUL-REST é necessário passar como parâmetro usuário e senha na seguinte URL.
Para passagem da senha é necessário converte-la para SHA1, com este resultado realizar a conversão para BASE64. Tendo em vista que a conversão para BASE64 irá trazer caracteres incoerentes para passagem da URL, será necessário fazer a conversão para URL-ENCODE.
Observe que por trazer os caracteres " / e = " na conversão de SHA1 e BASE64, é necessário o URL-ENCODE.
|