/
githubmirror
/
angular
Обзор
Документация
Войти
/
githubmirror
/
angular
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/common/http/src/context.ts
114 строк
3 KB
SkyZeroZx
docs: Adds guide links to HTTP API docs for better discoverability
27 окт 2025, 11:25
27 окт 2025, 11:25
c5e6b8b
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ /** * A token used to manipulate and access values stored in `HttpContext`. * * @see [Request and response metadata](guide/http/interceptors#request-and-response-metadata) * * @publicApi */ export class HttpContextToken<T> { constructor(public readonly defaultValue: () => T) {} } /** * Http context stores arbitrary user defined values and ensures type safety without * actually knowing the types. It is backed by a `Map` and guarantees that keys do not clash. * * This context is mutable and is shared between cloned requests unless explicitly specified. * * @usageNotes * * ### Usage Example * * ```ts * // inside cache.interceptors.ts * export const IS_CACHE_ENABLED = new HttpContextToken<boolean>(() => false); * * export class CacheInterceptor implements HttpInterceptor { * * intercept(req: HttpRequest<any>, delegate: HttpHandler): Observable<HttpEvent<any>> { * if (req.context.get(IS_CACHE_ENABLED) === true) { * return ...; * } * return delegate.handle(req); * } * } * * // inside a service * * this.httpClient.get('/api/weather', { * context: new HttpContext().set(IS_CACHE_ENABLED, true) * }).subscribe(...); * ``` * * @see [Request and response metadata](guide/http/interceptors#request-and-response-metadata) * * @publicApi */ export class HttpContext { private readonly map = new Map<HttpContextToken<unknown>, unknown>(); /** * Store a value in the context. If a value is already present it will be overwritten. * * @param token The reference to an instance of `HttpContextToken`. * @param value The value to store. * * @returns A reference to itself for easy chaining. */ set<T>(token: HttpContextToken<T>, value: T): HttpContext { this.map.set(token, value); return this; } /** * Retrieve the value associated with the given token. * * @param token The reference to an instance of `HttpContextToken`. * * @returns The stored value or default if one is defined. */ get<T>(token: HttpContextToken<T>): T { if (!this.map.has(token)) { this.map.set(token, token.defaultValue()); } return this.map.get(token) as T; } /** * Delete the value associated with the given token. * * @param token The reference to an instance of `HttpContextToken`. * * @returns A reference to itself for easy chaining. */ delete(token: HttpContextToken<unknown>): HttpContext { this.map.delete(token); return this; } /** * Checks for existence of a given token. * * @param token The reference to an instance of `HttpContextToken`. * * @returns True if the token exists, false otherwise. */ has(token: HttpContextToken<unknown>): boolean { return this.map.has(token); } /** * @returns a list of tokens currently stored in the context. */ keys(): IterableIterator<HttpContextToken<unknown>> { return this.map.keys(); } }