Class RequestManager
public
Defined in:
../packages/request/src/-private/manager.ts:325
Module:
@ember-data/request
1 |
import { RequestManager } from '@ember-data/request'; |
A RequestManager provides a request/response flow in which configured handlers are successively given the opportunity to handle, modify, or pass-along a request.
1 2 3 |
interface RequestManager { request<T>(req: RequestInfo): Future<T>; } |
For example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import { RequestManager } from '@ember-data/request'; import { Fetch } from '@ember/data/request/fetch'; import Auth from 'ember-simple-auth/ember-data-handler'; import Config from './config'; const { apiUrl } = Config; // ... create manager const manager = new RequestManager(); manager.use([Auth, Fetch]); // ... execute a request const response = await manager.request({ url: `${apiUrl}/users` }); |
Futures
The return value of manager.request
is a Future
, which allows
access to limited information about the request while it is still
pending and fulfills with the final state when the request completes.
A Future
is cancellable via abort
.
Handlers may optionally expose a ReadableStream
to the Future
for
streaming data; however, when doing so the future should not resolve
until the response stream is fully read.
1 2 3 4 5 |
interface Future<T> extends Promise<StructuredDocument<T>> { abort(): void; async getStream(): ReadableStream | null; } |
StructuredDocuments
A Future resolves with a StructuredDataDocument
or rejects with a StructuredErrorDocument
.
1 2 3 4 5 6 7 8 9 10 11 |
interface StructuredDataDocument<T> { request: ImmutableRequestInfo; response: ImmutableResponseInfo; data: T; } interface StructuredErrorDocument extends Error { request: ImmutableRequestInfo; response: ImmutableResponseInfo; error: string | object; } type StructuredDocument<T> = StructuredDataDocument<T> | StructuredErrorDocument; |