多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## HTTP 适配器 有时,您可能希望在 `Nest` 应用程序上下文中或从外部访问底层 `HTTP` 服务器。 基本上,每个本机(特定于平台的)`HTTP` 服务器/库实例都包含在 `adapter`(适配器)中。适配器注册为全局可用的提供程序,可以从应用程序上下文中提取,也可以轻松地注入其他提供程序。 ### 外部应用上下文策略 为了从应用程序上下文外部获取 `HttpAdapter` 引用,您可以调用 `getHttpAdapter()` 方法。 ```typescript const app = await NestFactory.create(ApplicationModule); const httpAdapter = app.getHttpAdapter(); ``` ### 上下文策略 为了从应用程序上下文中获取`HttpAdapterHost` 引用,您可以采用与任何其他现有提供程序相同的方式注入它(例如,通过 `constructor`注入)。 ```typescript export class CatsService { constructor(private adapterHost: HttpAdapterHost) {} } ``` > `HttpAdapterHost` 需要从 `@nestjs/core` 导入包。 `HttpAdapterHost` 不是真实的 `HttpAdapter` 。为了获得 `HttpAdapter` ,只需访问该 `httpAdapter` 属性。 ```typescript const adapterHost = app.get(HttpAdapterHost); const httpAdapter = adapterHost.httpAdapter; ``` 该 `httpAdapter` 是底层框架使用的 `HTTP` 适配器的实际实例。它可以是 `ExpressAdapter` 或 `FastifyAdapter`的实例(两个类都扩展了自`AbstractHttpAdapter`)。 每个适配器都公开了几种与 `HTTP` 服务器交互的有用方法。尽管如此,如果您想直接访问库引用,请调用 `getInstance()` 方法。 ```typescript const instance = httpAdapter.getInstance(); ```