node.js - 如何在 Node/Koa 中将流作为 JSON 响应的一部分返回?
问题描述
目前,我有一个路由处理程序,它返回一个 PDF 流作为响应正文:
api.get('/create/pdf', async ({ request, response }) => {
const { pdfStream } = await createPdfStream() // This returns a Transform stream
response.body = pdfStream
})
我可以通过执行以下操作在客户端上获取此 PDF:
const response = await fetch('/create/pdf')
const blob = await response.blob()
const pdfUrl = URL.createObjectUrl(blob) // I can now use `pdfUrl` to render the PDF
但是,我现在想从 API 路由返回一些额外的属性,所以我想让它成为 JSON 响应,而不是仅仅返回流。这可能吗?我基本上想将我的路由处理程序更改为这样的:
api.get('/create/pdf', async ({ request, response }) => {
const { pdfStream, pdfMetadata } = await createPdfStream() // This returns a Transform stream
response.body = {
pdfStream,
pdfMetadata
}
})
但是如果我这样做了,我不确定我将如何能够再访问客户端上的 PDF,因为我不能再这样做response.blob()
了,我只能做response.json()
. 有没有人有任何提示?
解决方案
推荐阅读
- django - highcharts 和 django 传递字典
- java - 选修的
对于方法的输入参数 - ios - libdispatch(apple-open-source)中的这段代码是什么意思?
- java - springboot中使用hibernate拦截器的问题
- xml - XSD 元素应该只在树中包含一次
- javascript - 如何使用多个文本字符串条件从数组中过滤出多个对象
- django-rest-framework - 覆盖.get_queryset()时如何正确返回错误?
- python - 一种更有效的绘制四个点的方法,将它们连接起来并在 python 中为框下的区域着色
- python - 尝试在 django 中删除模型对象时出错
- sql - Big Query Standard SQL 使用 Partition By 和 ARRAY_AGG() 函数