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 das funções irá definir como serão recuperados seus valores. Em uma requisição web, por exemplo, estes valores podem ser recuperados a partir obtidos de três diferentes origens:

  • PathParam: o valor faz parte da URL de execução, geralmente utilizados para representar códigos (chave primária).
    Exemplo: 
    http://localhost:8080/logix<servidor>:<porta>/logixrest/logr2/companies/01
    ;
    http://localhost:8080/logix<servidor>:<porta>/logixrest/manr1/item/01/ITEMXPTO.

  • QueryString: o valor virá como parâmetro da URL, indicado pelo sufixo ? ou & sempre acompanhado de um nome, comumente utilizado para definir parâmetros de execuçãodo nome do parâmetro.
    Exemplo: 
    http://localhost<servidor>:8080<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, utilizado para enviar informações em lote ou para conteúdos mais sensíveis.
    Exemplo: 

    Bloco de código
    POST http://
    localhost
    <servidor>:
    8080
    <porta>/
    logix/item/XX.
    Bloco de código
    POST /logix/logixrest/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.

Nota
titleTipos de Variáveis

Para este desenvolvimento, alguns tipos de dados 4GL não são suportados como parâmetros de entrada, como:
INTERVAL, DATETIME, ARRAY multidimensionais multidimensional e RECORD com atributos complexos (RECORD, ARRAY ou ARRAY OF RECORD).

Nota

As variáveis devem ser definidas uma por linha sem "atalhos".

Nota

Nunca crie RECORD com estruturas diferentes, porém com o mesmo nome no mesmo código fonte.

2.1. PathParam

O PathParam é um valor contido na própria URL da requisição web e é utilizado para definir identificadores (chave primária). Para definir um parâmetro de entrada na função da API, representando um PathParam, é do tipo PathParam é necessário nomeá-lo com o prefixo _pp_ conforme os exemplos abaixo:

Bloco de código
linenumberstrue
# Recupera as informações de uma determinada empresa.

...


# GET http://

...

<servidor>:

...

<porta>/

...

logixrest/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>/

...

logixrest/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

...

Nota

Não é possível definir variáveis complexas

...

como RECORD, ARRAY,

...

ou ARRAY OF RECORD

...

 como PathParam.

...

Informações

Para mais de um parâmetro do tipo PathParam, defina-os na ordem de utilização na URL e

...

não utilize outro tipo de parâmetro entre eles.

...

Aviso

Nunca utilize valores que possuam caracteres especiais, vírgulas, acentos ou espaços em branco como um PathParam da URL, isto ocasionará valores inválidos.

2.2. QueryString

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 na função da API, representando uma QueryString, do tipo QueryString é necessário nomeá-lo com o prefixo _qsqp_ e com o nome utilizado na URL conforme os exemplos abaixo:

Bloco de código
linenumberstrue
# Pesquisa por itens de uma determinada empresa, permitindo ordenar por um determinado campo.

...


#

...

 GET http://

...

<servidor>:

...

<porta>/

...

logixrest/manr1/itens/01?order=cod_item

...


#------------------------------------------------------------------------------#

...


FUNCTION

...

 manr1_pub_get_itens(l_pp_cod_empresa,l_

...

qp_order)

...


#------------------------------------------------------------------------------#

...


    DEFINE l_pp_cod_

...

empresa LIKE

...

 empresa.cod_empresa

...


    DEFINE l_

...

qp_order

...

       CHAR(100)

...


    
    CALL CONOUT(l_pp_cod_empresa)

...

 # l_pp_cod_empresa = "01"

...


    CALL CONOUT(l_

...

qp_order)

...

       # l_qp_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>/

...

logixrest/logr2/empresas?order=cod_empresa&limit=100

...


#------------------------------------------------------------------------------#

...


FUNCTION

...

 logr2_pub_get_empresas(l_

...

qp_order,l_

...

qp_limit)

...


#------------------------------------------------------------------------------#

...


    DEFINE l_

...

qp_

...

order CHAR(100)

...


    DEFINE l_

...

qp_limit

...

 INTEGER

...

 
    
    CALL CONOUT(l_

...

qp_order)

...

 # l_

...

qp_order = "cod_empresa"

...


    CALL CONOUT(l_

...

qp_limit)

...

 # l_

...

qp_limit = 100

...


END FUNCTION

...

Nota

Não é possível definir variáveis complexas como RECORD

...

 ou ARRAY OF RECORD como QueryString.

2.3. Payload

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 _qp_) 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>/logixrest/logr2/empresa
# BODY:
# {
#     "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(empresa)
#------------------------------------------------------------------------------#
    DEFINE empresa RECORD LIKE empresa.*
END FUNCTION
Bloco de código
linenumberstrue
# Efetua a modificação de um determinado item.
# PUT http://<servidor>:<porta>/logixrest/manr1/item/01/ITEMXPTO
# BODY:
# {
#     "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,item)
#------------------------------------------------------------------------------#
    DEFINE l_pp_cod_empresa LIKE item.cod_empresa
    DEFINE l_pp_cod_item    LIKE item.cod_item
    DEFINE item             RECORD LIKE item.*
END FUNCTION