Páginas filhas
  • 2. Parâmetros de Entrada

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Aviso
titleImportante

O conteúdo relacionado na página abaixo foi substituído e será descontinuado em releases futuras.

A nova técnica para desenvolvimento de API poderá ser consultada através do seguinte endereço (http://tdn.totvs.com/x/6BE4Fw) e esta disponível a partir da release 12.1.22 do Logix.Documento em desenvolvimento.

A nomenclatura dos parâmetros de entrada irá definir como serão recuperados seus valores. Em uma requisição web, por exemplo, estes valores podem ser obtidos de três diferentes origens:

  • PathParam: o valor faz parte da URL de execução.
    Exemplo:
    http://<servidor>:<porta>/logix-restlogixrest/logr2/companies/01
    ;
    http://<servidor>:<porta>/logix-restlogixrest/manr1/item/01/ITEMXPTO.

  • QueryString: o valor virá como parâmetro da URL, indicado pelo sufixo ? ou & sempre acompanhado do nome do parâmetro.
    Exemplo:
    http://<servidor>:<porta>/logix-rest/manr1/item/XX?order=asc&visible=true.

  • PayLoad: o valor virá no cabeçalho da requisição web e não será visível na URL.
    Exemplo:

    Bloco de código
    POST http://<servidor>:<porta>/logix-restlogixrest/manr1/item/XX HTTP/1.1
    Content-Type: application/json
    
    {
    	"item": {
    		"cod_empresa": "XX", 
    		"cod_item": "ITEMXPTO"
    	}
    }
Aviso
titleImportante

O nome das variáveis devem ser sempre definidas com letras minúsculas, não é permitido utilizar letras maiúsculas ou "Camel Case".


Abaixo será demonstrado como definir cada um destes tipos de parâmetros de entrada na função 4GL de sua API.

...

Bloco de código
linenumberstrue
# Recupera as informações de uma determinada empresa.
# GET http://<servidor>:<porta>/logix-restlogixrest/logr2/empresa/01
#------------------------------------------------------------------------------#
FUNCTION logr2_pub_get_empresa(l_pp_cod_empresa)
#------------------------------------------------------------------------------#
    DEFINE l_pp_cod_empresa LIKE empresa.cod_empresa
    CALL CONOUT(l_pp_cod_empresa) # l_pp_cod_empresa = "01"
END FUNCTION
Bloco de código
linenumberstrue
# Valida a existência de um item na base de dados.
# POST http://<servidor>:<porta>/logix-restlogixrest/manr1/validaItem/01/ITEMXPTO
#------------------------------------------------------------------------------#
FUNCTION manr1_pub_process_validaItem(l_pp_cod_empresa,l_pp_cod_item)
#------------------------------------------------------------------------------#
    DEFINE l_pp_cod_empresa LIKE empresa.cod_empresa
    DEFINE l_pp_cod_item    LIKE item.cod_item

    CALL CONOUT(l_pp_cod_empresa) # l_pp_cod_empresa = "01"
    CALL CONOUT(l_pp_cod_item)    # l_pp_cod_item = "ITEMXPTO"
END FUNCTION

...

A QueryString é um parâmetro vindo na URL da requisição web caracterizado pelo sinal ? e posteriormente por & sempre acompanhado pelo nome do parâmetro e um valor, geralmente representando parametrizações de execução ou exibição de dados. Para definir um parâmetro de entrada do tipo QueryString é necessário nomeá-lo com o prefixo _qsqp_ e com o nome utilizado na URL conforme abaixo:

Bloco de código
linenumberstrue
# Pesquisa por itens de uma determinada empresa, permitindo ordenar por um determinado campo.
# GET http://<servidor>:<porta>/logix-restlogixrest/manr1/itens/01?order=cod_item
#------------------------------------------------------------------------------#
FUNCTION manr1_pub_get_itens(l_pp_cod_empresa,l_qsqp_order)
#------------------------------------------------------------------------------#
    DEFINE l_pp_cod_empresa LIKE empresa.cod_empresa
    DEFINE l_qsqp_order       CHAR(100)
    
    CALL CONOUT(l_pp_cod_empresa) # l_pp_cod_empresa = "01"
    CALL CONOUT(l_qsqp_order)       # l_qsqp_order = "cod_item"
END FUNCTION
Bloco de código
linenumberstrue
# Pesquisa por empresas permitindo ordenar e limitar a quantidade de resultados.
# GET http://<servidor>:<porta>/logix-restlogixrest/logr2/empresas?order=cod_empresa&limit=100
#------------------------------------------------------------------------------#
FUNCTION logr2_pub_get_empresas(l_qsqp_order,l_qsqp_limit)
#------------------------------------------------------------------------------#
    DEFINE l_qsqp_order CHAR(100)
    DEFINE l_qsqp_limit INTEGER 
    
    CALL CONOUT(l_qsqp_order) # l_qsqp_order = "cod_empresa"
    CALL CONOUT(l_qsqp_limit) # l_qsqp_limit = 100
END FUNCTION

...

Payload são os valores enviados no cabeçalho da requisições e não são visíveis na URL, utilizado para envio de informações grandes, em lote ou com conteúdo sensível. Todo parâmetro de entrada que não possuir sufixo de identificação (_pp_ ou _qsqp_) será considerado do tipo Payload e o nome do objeto JSON enviado na requisição deve ser exatamente igual ao nome da variável definida no código fonte, conforme abaixo:

Bloco de código
linenumberstrue
# Efetua a inclusão de uma nova empresa.
# POST http://<servidor>:<porta>/logix-restlogixrest/logr2/empresa
# BODY:
# {
#     "lr_empresa": {
#         "cod_empresa": "02",
#         "den_empresa": "TESTE",
#         "den_reduz": "TESTE",
#         "end_empresa": "RUA TENENTE ANTÔNIO JOÃO",
#         "den_bairro": "Bom Retiro",
#         "den_munic": "JOINVILLE",
#         "uni_feder": "SC",
#         "ins_estadual": "304.726.052",
#         "num_cgc": "672.796.280/0014-9",
#         "num_caixa_postal": null,
#         "cod_cep": "89223-100",
#         "num_telefone": null,
#         "num_telex": null,
#         "num_fax": null,
#         "end_telegraf": null,
#         "num_reg_junta": null,
#         "dat_inclu_junta": null,
#         "ies_filial": "N",
#         "dat_fundacao": "2012-04-23T18:25:43.511Z",
#         "cod_cliente": null
#     }
# }
#------------------------------------------------------------------------------#
FUNCTION logr2_pub_create_empresa(lr_empresa)
#------------------------------------------------------------------------------#
    DEFINE lr_empresa RECORD LIKE empresa.*
END FUNCTION
Bloco de código
linenumberstrue
# Efetua a modificação de um determinado item.
# PUT http://<servidor>:<porta>/logix-restlogixrest/manr1/item/01/ITEMXPTO
# BODY:
# {
#     "lr_item": {
#         "cod_empresa": "01",
#         "cod_item": "ITEMXPTO",
#         "den_item": "ITEM TESTE",
#         "den_item_reduz": "ITEM",
#         "cod_unid_med": "PC",
#         "pes_unit": 1,
#         "ies_tip_item": "T",
#         "dat_cadastro": "2009-05-20T00:00:00.000Z",
#         "ies_ctr_estoque": "N",
#         "cod_local_estoque": null,
#         "ies_tem_inspecao": "N",
#         "cod_local_insp": null,
#         "ies_ctr_lote": "N",
#         "cod_familia": "FAN",
#         "gru_ctr_estoq": 7,
#         "cod_cla_fisc": "0",
#         "pct_ipi": 0,
#         "cod_lin_prod": 1,
#         "cod_lin_recei": 2,
#         "cod_seg_merc": 0,
#         "cod_cla_uso": 0,
#         "fat_conver": 1,
#         "ies_situacao": "A"
#     }
# }
#------------------------------------------------------------------------------#
FUNCTION manr1_pub_update_item(l_pp_cod_empresa,l_pp_cod_item,lr_item)
#------------------------------------------------------------------------------#
    DEFINE l_pp_cod_empresa LIKE item.cod_empresa
    DEFINE l_pp_cod_item    LIKE item.cod_item
    DEFINE lr_item             RECORD LIKE item.*
END FUNCTION