Abrangência |
---|
ERP 11 e superiores |
Para codificação de um Web Services REST, foram criadas na linguagem AdvPL instruções especiais de declaração de classes, específicas, que suportam nomes de classe, métodos e propriedades. A utilização destes comandos exige a declaração da #INCLUDE "RESTFUL.CH", no início do código fonte, como também atenção a alguns pontos e particularidades, começando pela nomenclatura do serviço, estruturas, métodos e propriedades.
É muito importante estar atento ao desenvolver os métodos REST, devido às características operacionais do ambiente de Working Threads utilizado pelo Web Services. Ao executar um método do Web Services, o ambiente será mantido no ar, aguardando uma nova requisição de processamento, de qualquer serviço ou método de qualquer cliente. Deste modo, ao desenvolver um serviço, não deve-se deixar abertas as queriesutilizadas no método, filtros setados em tabelas principais ou configurações específicas não-padrão do ambiente, realizadas para o processamento de um método específico; pois isto pode causar impacto no funcionamento de todos os Web Services compilados e ativos neste servidor, com efeitos imprevisíveis.
Nomenclatura dos serviços
O nome de uma classe para Web Services, deve ser iniciada por um caractere alfabético e deve conter apenas os caracteres alfabéticos compreendidos entre A e Z, os caracteres numéricos compreendidos entre 0 e 9, podendo também ser utilizado o caracter "_" (underline). Um serviço não pode ter o nome de uma palavra reservada, da linguagem AdvPL, ou ter o nome igual a um tipo básico de informação.
O nome dado a uma estrutura obedece as mesmas regras da nomenclatura de serviços; ou seja, não pode haver uma estrutura com o mesmo nome de um serviço declarado. Além disso, é importante estar atento ao fato de uma estrutura não estar diretamente ligada ao serviço em questão, de modo que não pode-se compilar duas estruturas de mesmo nome no mesmo repositório.
Uma estrutura constitui um agrupamento de dados, criado como um comando especial (WSSTRUCT) em AdvPL. Para isso, deve-se criar de uma estrutura para um serviço, quando for necessário agrupar um conjunto de dados básicos e/ou outras estruturas em um único tipo de informação, que será utilizada como parâmetro e/ou retorno em um ou mais métodos do serviço.
Cada parâmetro e retorno de todos os métodos de um serviço, devem ser declarados como uma propriedade da classe do serviço. Para dar nome a estes, são válidas as mesmas regras da nomenclatura de serviços, não podendo haver um dado com o mesmo nome de um serviço ou estrutura já declarados anteriormente.