O Chunked é um termo utilizado em conjunto com o protocolo de transferência HTTP, também conhecido como Chunked Transfer Encoding, é um mecanismo para enviar dados em pedaços ou "chunks", em vez de enviar tudo de uma só vez. Essa abordagem pode ser útil em cenários em que o tamanho total dos dados a serem transmitidos é desconhecido ou quando a transmissão de dados em uma única operação pode ser impraticável devido a restrições de recursos ou latência de rede.
No REST TLPP, se você deseja implementar o envio dos dados divididos em pequenos chunks (pedaços), você deve utilizar uma combinação de métodos disponíveis:
Do primeiro até o penúltimo envio, deve utilizar a sintaxe: oRest:setChunkedResponse(cContent).
No último envio, deve utilizar a sintaxe: oRest:setLastChunkedResponse(cContent).
Veja mais sobre o o método oRest:setLastChunkedResponse.
...
Sintaxe
Bloco de código |
---|
|
setChunkedResponse( < cMessage > ) |
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
cMessage | string | Conteudo COMPACTADO referente ao corpo(Body) da resposta da requisição | X |
|
Retorno
Nome | Tipo | Descrição |
---|
lRet | lógico | Indica se o método foi executado(.T.) ou (.F.) caso tenha ocorrido algum problema |
Observações
Para visualizar o exemplo, execute o Rest no enderecouma requisição para o verbo impementado para a URI: "/documentation/setchunkedresponse"
- Para enviar o "último chunk", utilize o método "setLastChunkedResponse". Veja mais em: oRest:setLastChunkedResponse
Exemplos
Bloco de código |
---|
|
#include "tlpp-core.th"
#include "tlpp-rest.th"
@Get("/chunked//TODO - criada issue DTTLPP-1000 para implementação deste exemplo, que depende da:
//implementação do código de exemplo está vinculado a resolução da Issue - DTTLPP-490
#include "tlpp-core.th"
#include "tlpp-rest.th"
@Get("/documentation/SetChunkedResponse")
Function u_fSetChunkedResponse()
return oRest:setChunkedResponse("Adding Chunked Response")ctry/:ctry")
function u_Chunked()
local jParams := oRest:getPathParamsRequest() as object
local cContent := '' as character
local nTry := 0 as numeric
local nA := 0 as numeric
if (jParams <> NIL .And. jParams['ctry'] <> Nil .And. !Empty(jParams['ctry']))
if (nTry := Val(jParams['ctry'])) > 0
for nA := 1 to nTry
cContent := StrTran(sPutChunkedValue(), "#change!", cValToChar(nA))
if(nA == nTry)
oRest:setLastChunkedResponse(cContent)
else
oRest:setChunkedResponse(cContent)
endif
next
endif
endif
return
Static Function sPutChunkedValue()
local cContent := '' as character
cContent := '1:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed eros turpis, finibus vitae eros eu, consectetur lacinia nisl. Duis et dapibus nisi. Pellentesque facilisis arcu quam, ac tincidunt lectus pharetra in. Morbi dapibus semper dolor eget euismod. Pellentesque ut commodo lorem. Suspendisse efficitur congue leo, id lacinia dolor auctor vitae. Vestibulum vitae elit in ligula pellentesque cursus. Donec quis leo in massa interdum aliquam. Vivamus auctor quam nec mattis dignissim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Etiam at orci luctus, egestas est vitae, scelerisque nisl.';
+ 'Cras finibus sem sed dignissim rutrum. Nam a lectus porttitor, elementum sapien sed, porta ex. Morbi accumsan porttitor libero, auctor mollis augue aliquet eu. Sed cursus sapien ut nisi laoreet tempus. Donec congue laoreet eros sit amet semper. Phasellus ac urna ut velit volutpat sagittis. Vestibulum ullamcorper ex in dictum rutrum. Ve. Ut scelerisque id.:#change!'
Return cContent |
Abrangência
01/2020