Histórico da Página
Classe base para criação de adapters utilizados em serviços REST .E suportada suportando filtros de paginação e filtros baseados no padrão oData.
...
New
Descrição
Método construtor da classe
...
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(oWS: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 |
A partir do exemplo acima é possível realizar filtros no retorno do GET, abaixo exemplos utilizando paginação e o padrão oData.
Obs. Endereço e conteúdo da comparação deve ser ajustado de acordo com o ambiente utilizado.
Filtro utilizando paginação
Bloco de código |
---|
http://localhost:8080/teste/rest/api/v1/products?pagesize=1&page=3 |
Filtro utilizando o padrão oData
Bloco de código |
---|
http://localhost:8080/teste/rest/api/v1/products?filter=code eq '000001' |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas