Passer au contenu

Adaptateur HTTP

Occasionnellement, vous pouvez avoir besoin d’accéder au serveur HTTP sous-jacent, soit dans le contexte de l’application Nest, soit de l’extérieur.

Chaque serveur/bibliothèque HTTP natif (spécifique à une plateforme) (par exemple, Express et Fastify) est enveloppé dans un adaptateur. L’adaptateur est enregistré en tant que fournisseur globalement disponible qui peut être récupéré depuis le contexte de l’application, ainsi que injecté dans d’autres fournisseurs.

Stratégie hors contexte d’application

Pour obtenir une référence à l’HttpAdapter depuis l’extérieur du contexte de l’application, appelez la méthode getHttpAdapter().

Exemple de code pour obtenir HttpAdapter hors du contexte
const app = await NestFactory.create(AppModule);
const httpAdapter = app.getHttpAdapter();

Stratégie dans le contexte

Pour obtenir une référence à l’HttpAdapterHost depuis l’intérieur du contexte de l’application, injectez-le en utilisant la même technique que pour tout autre fournisseur existant (par exemple, via l’injection par constructeur).

Exemple de service qui utilise HttpAdapterHost
export class CatsService {
constructor(private adapterHost: HttpAdapterHost) {}
}
Exemple de service avec dépendances
@Dependencies(HttpAdapterHost)
export class CatsService {
constructor(adapterHost) {
this.adapterHost = adapterHost;
}
}

L’HttpAdapterHost n’est pas un véritable HttpAdapter. Pour obtenir l’instance réelle de l’HttpAdapter, il suffit d’accéder à la propriété httpAdapter.

Obtention de l'instance réelle de HttpAdapter
const adapterHost = app.get(HttpAdapterHost);
const httpAdapter = adapterHost.httpAdapter;

L’httpAdapter est l’instance réelle de l’adaptateur HTTP utilisée par le framework sous-jacent. C’est une instance soit de ExpressAdapter, soit de FastifyAdapter (ces deux classes étendent AbstractHttpAdapter).

L’objet adaptateur expose plusieurs méthodes utiles pour interagir avec le serveur HTTP. Cependant, si vous souhaitez accéder directement à l’instance de la bibliothèque (par exemple, l’instance d’Express), appelez la méthode getInstance().

Accès à l'instance de la bibliothèque
const instance = httpAdapter.getInstance();