Skip to content
API/SpringResponseStrategy

SpringResponseStrategy

src/strategies/spring-response.strategy.ts4 public methodsclass

Response strategy for the Spring Data REST driver

Parses Spring Data REST’s HAL envelope:

{
"_embedded": { "users": [{ "id": 1, "name": "John" }] },
"_links": {
"first": { "href": "..." },
"prev": { "href": "..." },
"next": { "href": "..." },
"last": { "href": "..." }
},
"page": { "size": 20, "totalElements": 100, "totalPages": 5, "number": 1 }
}

Two HAL quirks are absorbed here on top of the inherited dot-path traversal:

  • page.number is 0-indexed — the strategy adds 1 so the library state stays 1-indexed (mirroring SpringRequestStrategy, which subtracts 1 on the way out).
  • The collection key under _embedded is the resource rel name (e.g. _embedded.users), which cannot be known statically. The default data path is plain _embedded; when it resolves to an object rather than an array, the strategy picks the first array value inside it. Consumers with multiple embedded rels can pin the exact path via Config.response (e.g. data: '_embedded.users').

Default key paths are configured in SpringResponseOptions.

new SpringResponseStrategy()
paginate(response: RawResponse, options: ResponseOptions): PaginatedCollection<T>

Parse a Spring Data REST HAL response into a PaginatedCollection

Parameter Type Description
response RawResponse The raw API response body
options ResponseOptions The response key name configuration

Returns — A typed PaginatedCollection instance

resolve(response: RawResponse, path: string): unknown

Resolve a value from a response object using a dot-notation path

Supports both flat keys ('data') and nested paths ('meta.totalItems').

Parameter Type Description
response RawResponse The raw response object
path string The dot-notation path to resolve

Returns — The resolved value, or undefined if any segment is missing

resolveFrom(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number): number | undefined

Resolve the “from” index value

If options.from resolves to a value in the response, use it. Otherwise compute (currentPage - 1) * perPage + 1 when both are known.

Parameter Type Description
response RawResponse The raw response object
options ResponseOptions The response key name configuration
currentPage number The current page number
perPage number The number of items per page

Returns — The “from” index, or undefined when neither path nor inputs suffice

resolveTo(response: RawResponse, options: ResponseOptions, currentPage: number, perPage?: number, total?: number): number | undefined

Resolve the “to” index value

If options.to resolves to a value in the response, use it. Otherwise compute Math.min(currentPage * perPage, total) when all three are known.

Parameter Type Description
response RawResponse The raw response object
options ResponseOptions The response key name configuration
currentPage number The current page number
perPage number The number of items per page
total number The total number of items

Returns — The “to” index, or undefined when neither path nor inputs suffice