Nestjs 如何从嵌套服务器中创建的中间件发送响应?
我已经用Fastify创建了一个NestJs项目,并为其创建了一个中间件,但我不知道如何向客户端发送响应,就像我们在express中所做的那样,如果您有任何帮助,我们将不胜感激,谢谢!,以下是我的中间件代码:Nestjs 如何从嵌套服务器中创建的中间件发送响应?,nestjs,fastify,nestjs-fastify,Nestjs,Fastify,Nestjs Fastify,我已经用Fastify创建了一个NestJs项目,并为其创建了一个中间件,但我不知道如何向客户端发送响应,就像我们在express中所做的那样,如果您有任何帮助,我们将不胜感激,谢谢!,以下是我的中间件代码: 导入{ 可注射, 内斯特, HttpException, HttpStatus, }来自“@nestjs/common”; @可注射() 导出类loggermdleware实现了嵌套中间件{ 使用(req:any、res:any、next:Function){ log('Request…'
导入{
可注射,
内斯特,
HttpException,
HttpStatus,
}来自“@nestjs/common”;
@可注射()
导出类loggermdleware实现了嵌套中间件{
使用(req:any、res:any、next:Function){
log('Request…',res);
//抛出新的HttpException('Forbidden',HttpStatus.Forbidden);
next();
}
}
看起来像是fastfy
抽象使用NodeJS vanilahttp
对象(此处注入的res
是)
看起来像是
fastfy
抽象使用NodeJS vanilahttp
对象(这里注入的res
是)
您是否尝试过
res.send()
,res.json()
或res.json()
?@Daniel是的,但他们给了我未定义的错误,在本地测试了它,并且res.send()
的工作原理与express中完全相同。见答案bellow@Daniel请注意,我正在使用fastify插件覆盖默认的express设置,因此我的项目使用fastify:,您也使用fastify了吗?我的错。但是我现在有了正确的答案:)(很抱歉造成混淆)您是否尝试过res.send()
,res.json()
或res.json()
?@Daniel yes,但他们给我的是未定义的错误在本地测试,并且res.send()
的工作方式与express完全相同。见答案bellow@Daniel请注意,我正在使用fastify插件覆盖默认的express设置,因此我的项目使用fastify:,您也使用fastify了吗?我的错。但我现在有了正确的答案:)(很抱歉给你带来困惑)
// app.middleware.ts
import { Injectable, NestMiddleware } from '@nestjs/common';
import { ServerResponse, IncomingMessage } from 'http';
@Injectable()
export class AppMiddleware implements NestMiddleware {
use(req: IncomingMessage, res: ServerResponse, next: Function) {
res.writeHead(200, { 'content-type': 'application/json' })
res.write(JSON.stringify({ test: "test" }))
res.end()
}
}
// app.module.ts
import { Module, MiddlewareConsumer, RequestMethod } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppMiddleware } from './app.middleware';
@Module({
imports: [],
controllers: [AppController],
providers: [],
})
export class AppModule {
configure(consumer: MiddlewareConsumer) {
consumer
.apply(AppMiddleware)
.forRoutes({ path: '*', method: RequestMethod.ALL }); // apply on all routes
}
}