我想使用对我的NestJ端点之一的Post请求获得puppeteer.goto()和puppeteer.pdf()的pdf。 当我尝试一个Get请求时,一切都按预期工作,但是,我想传递一些数据,因此它需要是Post请求。但是Post请求不使用样式,...等静态资产。
出于测试目的,两个端点返回的页面完全相同,唯一的不同是获取/发布。
@Get()
@Render('firstPage')
root(@Query() query) {
return { products: '' };
}
@Post('/test')
@Render('firstPage')
test(@Body() requestBody) {
return { products: '' };
}
带有发布到/ test端点的代码:
async generatePdfTest(requestBody): Promise<Buffer> {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', interceptedRequest => {
const data = {
method: 'POST',
postData: querystring.stringify(requestBody),
headers: {
...interceptedRequest.headers(),
'Content-Type': 'application/x-www-form-urlencoded',
},
};
interceptedRequest.continue(data);
});
await page.goto('http://localhost:3000/test', {
waitUntil: 'networkidle2',
});
return await page.pdf({
format: 'A4',
printBackground: true,
});
} catch (err) {
throw new HttpException(err, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
获取端点的代码:
async generatePdfTest(requestBody): Promise<Buffer> {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('http://localhost:3000', {
waitUntil: 'networkidle2',
});
return await page.pdf({
format: 'A4',
printBackground: true,
});
} catch (err) {
throw new HttpException(err, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
有人知道为什么静态资产在发布请求中会被忽略吗?