Download API Responses in Small Chunks
Description
Some web API responses are quite long, and it is useful to have the client download the response in small pieces or resume a download if the download is interrupted; for example, when the Internet connection is unstable.
Used With: This function is used with the WebServicesFramework in LogicNets v8.1+.
Details
LogicNets’ WebServicesFramework supports downloading a response in smaller chunks by passing the HTTP Range header (https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range):
GET /yourcompany/yourapi/endpoint
HTTP/1.1
Range: bytes=0-1000 Authorization:
Basic **** Accept: */*
In this case, the response is not written back to the client directly, but the API returns a 202 Accepted status response, Content-Range that contains the size of the actual response in bytes, Accept-Ranges, and a Location URL header you can use to retrieve the actual result.
HTTP/1.1 202 Accepted
LN-STATUS: 202 Accepted
Location: /yourcompany/async.lns?_asyncid=abc&_session=123
Content-Range: bytes */2000
Accept-Ranges: bytes
The client can start downloading the result by calling the Location URL multiple times for each chunk.
Chunk 1
GET /yourcompany/async.lns?_asyncid=abc&_session=123 HTTP/1.1
Range: bytes=0-1000
Chunk 2
GET /yourcompany/async.lns?_asyncid=abc&_session=123 HTTP/1.1
Range: bytes=1001-2000