FAQ
基本上,每个本机(特定于平台的)HTTP
服务器/库实例都包含在 adapter
(适配器)中。适配器注册为全局可用的提供程序,可以从应用程序上下文中提取,也可以轻松地注入其他提供程序。
为了 HttpAdapter
从应用程序上下文中获取,您可以调用 getHttpAdapter()
方法。
上下文策略
为了 HttpAdapterHost
从应用程序上下文中获取,您可以采用与任何其他现有提供程序相同的方式注入它(例如,通过 constructor
)。
export class CatsService {
constructor(private readonly adapterHost: HttpAdapterHost) {}
const adapterHost = app.get(HttpAdapterHost);
const httpAdapter = adapterHost.httpAdapter;
这 httpAdapter
是底层框架使用的 HTTP
适配器的实际实例。它可以是 或 FastifyAdapter
(两个类都扩展了 AbstractHttpAdapter
)。
每个适配器都公开了几种与 HTTP
服务器交互的有用方法。尽管如此,如果您想直接访问库引用,请调用 getInstance()
方法。
要为应用程序中的每个路由设置前缀, 让我们使用 INestApplication
对象的 setGlobalPrefix()
方法。
const app = await NestFactory.create(ApplicationModule);
app.setGlobalPrefix('v1');
混合应用程序是一个应用程序,它监听 HTTP
请求,可以通过实例 connectMicroservice()
函数将 INestApplication
与 INestMicroservice
实例的无限计数结合起来。
const app = await NestFactory.create(ApplicationModule);
const microservice = app.connectMicroservice({
transport: Transport.TCP,
});
await app.startAllMicroservicesAsync();
await app.listen(3001);
HTTPS
如果使用Fastify,则创建 app
如下代码:
const app = await NestFactory.create<NestFastifyApplication>(
ApplicationModule,
);
对库实例的完全控制提供了一种简单的方法来创建同时监听多个不同端口的服务器。
const httpsOptions = {
key: fs.readFileSync('./secrets/private-key.pem'),
cert: fs.readFileSync('./secrets/public-certificate.pem'),
};
const server = express();
const app = await NestFactory.create(
ApplicationModule,
new ExpressAdapter(server),
);
await app.init();
https.createServer(httpsOptions, server).listen(443);
ExpressAdapter
需要从 包导入。