POST请求创建文件,然后GET请求下载

时间:2015-12-01 19:47:54

标签: node.js http express

尝试做一些看似基本的事情。

我想创建一个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);
});

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

没有一种“正确”的方法可以做到这一点,但有一些解决方案包括:

  1. 完全删除GET路由处理程序(和jsondownload变量)并立即响应Content-Disposition设置。这是3中较好的,因为它减少了代码并使事情变得简单。

  2. POST路由处理程序中使用简单重定向。您可以执行res.redirect('/api/download')

  3. ,而不是立即使用JSON进行响应
  4. 执行或多或少的操作,但将逻辑(res.set()res.send())移动到从两个路由处理程序调用的单独函数中。