Histórico da Página
Informações | ||
---|---|---|
| ||
|
Introdução
...
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 Logix, de maneira segura e padronizada. A estrutura de integração de APIs Logix suporta o envio de requisições no estilo de arquitetura REST com o desenvolvimento da regra de negócio em 4GL.
Esta funcionalidade está disponível para utilização conforme apresentado no quadro abaixo:
Informações | ||||
---|---|---|---|---|
| ||||
|
Formato URL
...
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 funcionalidade em questão. Tomando como exemplo o endpoint de integração do recurso de "Dimensões" do módulo de "WMS" do produto "Logix", a URI básica deste serviço deve ser: /restlogix/wms/v1/dimensao
Aviso |
---|
A URL definida pelo Padrão de API TOTVS segue o seguinte formato: /restlogix/<módulo>/<versão API>/<recurso>/ Informações que forem passadas após o recurso, serão tratadas como parâmetros PATH. |
Serviço 4GL
...
Para "publicar" a funcionalidade 4GL basta criar o programa (.4gl) com o seguinte caminho: <módulo>/api/<versão API>/<recurso>.4gl. A sub-pasta "api" passa então a concentrar todas as funcionalidades de integração do módulo em questão. Outros caminhos e parâmetros podem ser adicionados a URL, mas sempre de acordo com o Guia de Implementação de APIs.
Aviso | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Os programas 4GL disponibilizados, deverão seguir o padrão de localização abaixo:
Exemplos:
|
Dentro do programa 4GL a definição da função principal (roteadora) é de fundamental importância, pois é ela que será primeiramente chamada e que definirá como será a execução das outras funções com base na requisição solicitada a partir do serviço A declaração do nome da função terá fundamental importância neste desenvolvimento, pois é isso que definirá como será a execução da função a partir de serviços web. Segue abaixo um exemplo de definição:
...
- Módulo da API (wms)
- Versão da API (v1)
- Recurso a ser executado (dimensao)
Abaixo um exemplo de recurso desenvolvido em 4GL para ser utilizado junto ao serviço de API:
Bloco de código |
---|
DATABASE Logix #------------------------------# FUNCTION wms_v1_dimensao() #------------------------------# CALL _ADVPL_create_rest_logix_routes() CALL _ADVPL_add_rest_logix_routes("GET", #--# Método #--# "/normal/*/", #--# Path Param a ser filtrado #--# "fields=*", #--# Query Param a ser filtrado #--# "wms_v1_get_dimensao_normal") #--# Função a ser executada #--# CALL _ADVPL_add_rest_logix_routes("GET", #--# Método #--# "/*", #--# Path Param a ser filtrado #--# "order=dimensao", #--# Query Param a ser filtrado #--# "wms_v1_get_dimensao_ordenado") #--# Função a ser executada #--# CALL _ADVPL_add_rest_logix_routes("GET", #--# Método #--# "/*", #--# Path Param a ser filtrado #--# "", #--# Query Param a ser filtrado #--# "wms_v1_get_dimensao") #--# Função a ser executada #--# CALL _ADVPL_add_rest_logix_routes("POST", #--# Método #--# "/*", #--# Path Param a ser filtrado #--# "", #--# Query Param a ser filtrado #--# "wms_v1_update_dimensao") #--# Função a ser executada #--# CALL _ADVPL_add_rest_logix_routes("PUT", #--# Método #--# "/*", #--# Path Param a ser filtrado #--# "", #--# Query Param a ser filtrado #--# "wms_v1_update_parc_dimensao") #--# Função a ser executada #--# CALL _ADVPL_add_rest_logix_routes("DELETE", #--# Método #--# "/*", #--# Path Param a ser filtrado #--# "", #--# Query Param a ser filtrado #--# "wms_v1_delete_dimensao") #--# Função a ser executada #--# END FUNCTION |
Abaixo seguem maiores detalhes sobre como o objeto de negócio e a URL de execução deverão ser criadas.
1.1 Objeto de Negócio
O fonte que conterá a função principal (roteadora) deverá ser criado seguindo o padrão abaixo:
Exemplos:
Objeto de Negócio | Função |
---|---|
\suprimentos\obrigacoes_fiscais\api\v1\transportadora.4gl | obf_v1_transportadora |
\suprimentos\suprimentos\api\v1\estoque.4gl | sup_v1_estoque |
\adm_producao\manufatura\api\v1\apontamento_horas.4gl | man_v1_apontamento_horas |
Nota | ||
---|---|---|
| ||
Para desenvolvimentos específicos, adicionar um indicador ao nome do recurso "_espec" para que não gere conflitos com as APIs disponibilizadas pelo produto padrão. Exemplo: obf_v1_transportadora_espec.4gl |
1.2 Método de Execução
O método de execução indica como será realizada a chamada da função através de um serviço web, ou seja, qual método de requisição HTTP será utilizado para sua execução. Esta informação deve estar de acordo com o objetivo da função, indicando a ação que será realizada na mesma.
Abaixo segue a tabela de conversão dos métodos HTTP para o método de execução das funções 4GL:
Método de Execução | Método HTTP | Objetivo |
---|---|---|
create | POST | Criação de um ou mais registros. |
process | POST | Processamento de dados ou geração de relatórios. |
update | PUT | Atualização de um ou mais registros. |
get | GET | Consulta a um ou mais registros. |
delete | DELETE | Exclusão de um ou mais registros. |
Os métodos de requisições HTTP existentes podem ser consultados através deste link: http://www.w3schools.com/tags/ref_httpmethods.asp.
1.4 Nome da Função
O nome da função 4GL irá definir o entry point
de execução através de um serviço web e indica o objeto de negócio que será manipulado.
...
Segue abaixo exemplo de definição de funções e como será realizada a requisição web de execução destas funções:
Função | Requisição |
---|---|
|
|
FUNCTION obfr0010_pub_process_emailTransportadora() |
|
FUNCTION supr0010_pub_update_estoqueProprio() |
|
FUNCTION manr0021_pub_get_apontamento_horas() | GET /logix-rest/manr21/apontamento_hora |