fix: body in middleware is undefined. I have bodyParser
Zekhap opened this issue · 3 comments
Description
I'm trying to print the request.body in my console from the middleware but its undefined
I've googled everywhere and tested allot of things, yet i cant seem to find my answer.
Minimal code-snippet showcasing the problem
@Service()
@Middleware({ type: "before" })
export class DemoMiddleware implements ExpressMiddlewareInterface {
async use(request: any, response: any, next: (err?: any) => any): Promise<any> {
console.log("-DemoMiddleware-");
console.log(request.body); //Is undefined
next();
}
}
@JsonController("/")
export class DemoController {
@Post("test")
demoPost(@Body() params: DemoResponse, @Res() response: Response) {
console.log("-DemoPost-");
return response.status(200).json({ message: "i got post", params: params });
}
}
export class DemoResponse {
username: string;
password: string;
}
createExpressServer({
controllers: [DemoController],
middlewares: [
bodyParser.json(),
bodyParser.urlencoded({ extended: true }),
DemoMiddleware
],
routePrefix: '/api',
}).listen(3000);Expected behavior
I expect to get the json that i posted
package.json
"body-parser": "^1.20.2",
"reflect-metadata": "^0.2.2",
"routing-controllers": "^0.10.4",
"class-transformer": "^0.5.1",
"class-validator": "^0.14.1",
"typedi": "^0.10.0",
Do you use your own express instance or the lib creates it? Seems like body-parser was not running before the middleware.
Oh, sorry I forgot to close this
I actually tested a bit more and solved my problem.
Apparently I need to have my body parser inside a middleware.
It does not work if I use the
routing-controllers {
middlewares:{ bodyparser()}
}
This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.