Classe base para criação de adapters utilizados em serviços REST.
E suportada
...
Descrição
Método construtor da classe
Parâmetros:
Nome | Tipo | Descrição |
---|---|---|
cVerb | Carácter | Verbo Rest utilizado no adapter |
lList | Lógico | Se irá listar o json |
Retorno Logico, Se foi construído corretamente
...
Adiciona campo a campo as configurações de campos utilizado no Adapter
Parâmetros:
Nome | Tipo | Descrição |
---|---|---|
cFieldJson | Carácter | Nome do campo no objeto Json |
cFieldQuery | Carácter | Nome do campo que será utilizado no ResultSet |
lJsonField | Lógico | Se .T. informa que o campo será exportado ao Json |
lFixed | Lógico | Se .T. informa que o campo não pode ser removido pelo FIELDS do QueryParam |
aStruct | Array | Vetor com a estrutura do campo no padrão {"CAMPO", "TIPO", Tamanho, Decimal}, caso não seja informada a estrutura, utiliza como base o dicionário SX3 |
...
Descrição
Informa a query para a geração do Json
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
cQuery | Carácter | Query para geração do Json |
Deverá ser utilizado os Id's:
#QueryFields# Campos do SELECT, existe tratamento para o FIELDS no QueryParam
#QueryWhere# Condições do WHERE, existe tratamento para FILTER no QueryParam
...
Faz o set da condição de filtro utilizada para ordenação do ResultSet, substitui o id #QueryWhere#
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
cWhere | Carácter | String contendo as condições do where para o ResultSet, substitui o id #QueryWhere# |
...
Descrição
Faz o set da condição padrão utilizada para ordenação do ResultSet
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
cOrder | Carácter | String contendo a ordenação que irá ser utilizada no ResultSet |
...
Descrição
Realiza o parse dos ids #QueryFields# e #QueryWhere# gerando o ResultSet
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
lUseTmpTable | Logico | Força o uso de tabela temporária, mesmo para os bancos com tratamento para geração de paginação via banco |
Retorno Logico, Retorna se a execução foi realizada com sucesso
...
Configura qual pagina sera retornada pelo adapter
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
nPage | Numérico | Número da pagina a ser retornada |
...
Descrição
Configura o tamanho da pagina
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
nPageSize | Numérico | Tamanho da página |
...
Descrição
Faz o set do filtro informado via QueryParam
Parâmetros
Nome | Tipo | Descrição |
---|---|---|
aUrlFilter | Array | Filtro via QueryParam |
...
Descrição
Irá retornar o Json
...
Bloco de código |
---|
#include "totvs.ch" #include "restful.ch" //------------------------------------------------------------------- /*/{Protheus.doc} products Declaração do ws products @author Anderson Toledo /*/ //------------------------------------------------------------------- WSRESTFUL products DESCRIPTION 'endpoint products API' FORMAT "application/json,text/html" WSDATA Page AS INTEGER OPTIONAL WSDATA PageSize AS INTEGER OPTIONAL WSMETHOD GET ProdList; DESCRIPTION "Retorna uma lista de produtos"; WSSYNTAX "/api/v1/products" ; PATH "/api/v1/products" ; PRODUCES APPLICATION_JSON END WSRESTFUL WSMETHOD GET ProdList QUERYPARAM Page WSREST products Return getPrdList(self) Static Function getPrdList( oWS ) Local lRet as logical Local oProd as object DEFAULT oWS:Page := 1 DEFAULT oWS:PageSize := 10 lRet := .T. //PrdAdapter será nossa classe que implementa fornecer os dados para o WS // O primeiro parametro indica que iremos tratar o método GET oProd := PrdAdapter():new( 'GET' ) //o método setPage indica qual página deveremos retornar //ex.: nossa consulta tem como resultado 100 produtos, e retornamos sempre uma listagem de 10 itens por página. // a página 1 retorna os itens de 1 a 10 // a página 2 retorna os itens de 11 a 20 // e assim até chegar ao final de nossa listagem de 100 produtos oProd:setPage(oWS:Page) // setPageSize indica que nossa página terá no máximo 10 itens oProd:setPageSize(10oWS:PageSize) // setUrlFilter indica o filtro querystring recebido (pode se utilizar um filtro oData) oProd:SetUrlFilter(oWS:aQueryString ) // Esse método irá processar as informações oProd:GetListProd() //Se tudo ocorreu bem, retorna os dados via Json If oProd:lOk oWS:SetResponse(oProd:getJSONResponse()) Else //Ou retorna o erro encontrado durante o processamento SetRestFault(oProd:GetCode(),oProd:GetMessage()) lRet := .F. EndIf //faz a desalocação de objetos e arrays utilizados oProd:DeActivate() oProd := nil Return lRet |