FAQ

    基本上,每个本机(特定于平台的)HTTP 服务器/库实例都包含在 adapter(适配器)中。适配器注册为全局可用的提供程序,可以从应用程序上下文中提取,也可以轻松地注入其他提供程序。

    为了 HttpAdapter 从应用程序上下文中获取,您可以调用 getHttpAdapter() 方法。

    上下文策略

    为了 HttpAdapterHost 从应用程序上下文中获取,您可以采用与任何其他现有提供程序相同的方式注入它(例如,通过 constructor)。

    1. export class CatsService {
    2. constructor(private readonly adapterHost: HttpAdapterHost) {}
    1. const adapterHost = app.get(HttpAdapterHost);
    2. const httpAdapter = adapterHost.httpAdapter;

    httpAdapter 是底层框架使用的 HTTP 适配器的实际实例。它可以是 或 FastifyAdapter(两个类都扩展了 AbstractHttpAdapter)。

    每个适配器都公开了几种与 HTTP 服务器交互的有用方法。尽管如此,如果您想直接访问库引用,请调用 getInstance() 方法。

    要为应用程序中的每个路由设置前缀, 让我们使用 INestApplication 对象的 setGlobalPrefix() 方法。

    1. const app = await NestFactory.create(ApplicationModule);
    2. app.setGlobalPrefix('v1');

    混合应用程序是一个应用程序,它监听 HTTP 请求,可以通过实例 connectMicroservice() 函数将 INestApplicationINestMicroservice 实例的无限计数结合起来。

    1. const app = await NestFactory.create(ApplicationModule);
    2. const microservice = app.connectMicroservice({
    3. transport: Transport.TCP,
    4. });
    5. await app.startAllMicroservicesAsync();
    6. await app.listen(3001);

    HTTPS

    如果使用Fastify,则创建 app 如下代码:

    1. const app = await NestFactory.create<NestFastifyApplication>(
    2. ApplicationModule,
    3. );

    对库实例的完全控制提供了一种简单的方法来创建同时监听多个不同端口的服务器。

    1. const httpsOptions = {
    2. key: fs.readFileSync('./secrets/private-key.pem'),
    3. cert: fs.readFileSync('./secrets/public-certificate.pem'),
    4. };
    5. const server = express();
    6. const app = await NestFactory.create(
    7. ApplicationModule,
    8. new ExpressAdapter(server),
    9. );
    10. await app.init();
    11. https.createServer(httpsOptions, server).listen(443);

    ExpressAdapter 需要从 包导入。

    译者署名