@pnp/queryable/pipeline¶
All of the odata requests processed by @pnp/queryable pass through an extensible request pipeline. Each request is executed in a specific request context defined by
the RequestContext
interface RequestContext¶
The interface that defines the context within which all requests are executed. Note that the pipeline methods to be executed are part of the context. This allows full control over the methods called during a request, and allows for the insertion of any custom methods required.
interface RequestContext<T> { batch: ODataBatch; batchDependency: () => void; cachingOptions: ICachingOptions; hasResult?: boolean; isBatched: boolean; isCached: boolean; options: FetchOptions; parser: ODataParser<T>; pipeline: Array<(c: RequestContext<T>) => Promise<RequestContext<T>>>; requestAbsoluteUrl: string; requestId: string; result?: T; verb: string; clientFactory: () => RequestClient; }
requestPipelineMethod decorator¶
The requestPipelineMethod decorator is used to tag a pipeline method and add functionality to bypass processing if a result is already present in the pipeline. If you would like your method to always run regardless of the existance of a result you can pass true to ensure it will always run. Each pipeline method takes a single argument of the current RequestContext and returns a promise resolving to the RequestContext updated as needed.
@requestPipelineMethod(true) public static myPipelineMethod<T>(context: RequestContext<T>): Promise<RequestContext<T>> { return new Promise<RequestContext<T>>(resolve => { // do something resolve(context); }); }
Default Pipeline¶
- logs the start of the request
- checks the cache for a value based on the context's cache settings
- sends the request if no value from found in the cache
- logs the end of the request