Aviso |
---|
|
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:// |
localhost8080logix/item/XX. Bloco de código |
---|
POST /logixlogixrest/manr1/item/XX HTTP/1.1
Content-Type: application/json
{
"item": {
"cod_empresa": "XX",
"cod_item": "ITEMXPTO"
}
} |
Aviso |
---|
|
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 |
---|
|
No Para este desenvolvimento de API Logix, 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 |
---|
|
# Recupera as informações de uma determinada empresa. |
...
...
...
...
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" |
...
Bloco de código |
---|
|
# Valida a existência de um item na base de dados. |
...
...
...
...
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 |
...
...
...
CALL CONOUT(l_pp_cod_empresa) # l_pp_cod_empresa = "01" |
...
CALL CONOUT(l_pp_cod_item) |
...
# l_pp_cod_item = "ITEMXPTO" |
...
...
Nota |
---|
Não é possível definir variáveis complexas |
...
...
...
...
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 |
---|
|
# Pesquisa por itens de uma determinada empresa, permitindo ordenar por um determinado campo. |
...
...
...
...
...
logixrest/manr1/itens/01?order=cod_item |
...
#------------------------------------------------------------------------------# |
...
...
manr1_pub_get_itens(l_pp_cod_empresa,l_ |
...
...
#------------------------------------------------------------------------------# |
...
...
...
...
...
...
...
CALL CONOUT(l_pp_cod_empresa) |
...
# l_pp_cod_empresa = "01" |
...
...
...
# l_qp_order = "cod_item" |
...
Bloco de código |
---|
|
# Pesquisa por empresas permitindo ordenar e limitar a quantidade de resultados. |
...
...
...
...
...
logixrest/logr2/empresas?order=cod_empresa&limit=100 |
...
#------------------------------------------------------------------------------# |
...
...
logr2_pub_get_empresas(l_ |
...
...
...
#------------------------------------------------------------------------------# |
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
Não é possível definir variáveis complexas como RECORD ou ARRAY OF RECORD |
...
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 |
---|
|
# 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 |
---|
|
# 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 |