尝试做一些看似基本的事情。
我想创建一个POST请求,通过它我将发送JSON。这些JSON将被创建为文件,我希望通过下载返回给用户。
这个用例就是我正在构建一个应用程序,它接受一个表单并将其转换为JSON以上传到MongoDB数据库。用户可以将这些JSON加载到应用程序中,以将旧记录重新加载为模板。
这就是我现在接近它的方式:
// Download JSON Previews
var jsondownload = {};
// Grabs the JSON from POST request
app.post('/api/download', function(req, res, next){
jsondownload = {};
var json = req.body;
jsondownload = json;
res.json(jsondownload);
next();
});
// Immediately downloads the JSON thereafter
app.get('/api/download', function(req, res){
res.set({"Content-Disposition":"attachment; filename='test.json'"});
res.send(jsondownload);
});
这样做的正确方法是什么?
答案 0 :(得分:1)
没有一种“正确”的方法可以做到这一点,但有一些解决方案包括:
完全删除GET
路由处理程序(和jsondownload
变量)并立即响应Content-Disposition
设置。这是3中较好的,因为它减少了代码并使事情变得简单。
在POST
路由处理程序中使用简单重定向。您可以执行res.redirect('/api/download')
。
执行或多或少的操作,但将逻辑(res.set()
和res.send()
)移动到从两个路由处理程序调用的单独函数中。