首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时支持api和web接口数据与node.js的交互?

如何同时支持api和web接口数据与node.js的交互?
EN

Stack Overflow用户
提问于 2013-11-03 14:56:19
回答 1查看 68关注 0票数 0

我很难将我们的移动应用程序和web界面的api调用分离开来,基本上代码是相同的,但是响应应该是不同的(html对于web,json对于api调用和app)。

所以现在我有这样的路线:

代码语言:javascript
复制
  app.post('/post', auth.needed, posts.create)
  app.post('/addPost', posts.createJson)

第一个用于web应用程序,第二个用于

但是"posts.create“里面的逻辑是一样的,它基本上上传图像并将帖子保存到db,现在我已经复制了代码,并正在寻求构造建议,如何正确地做到这一点,以及类似情况下的最佳实践是什么--谢谢!

代码语言:javascript
复制
exports.create = function (req, res) {
  var post= new Post(req.body)
  post.user = req.user
  //custom logic 
  post.uplSave(req.files.image, function (err) {
    if (!err) {
      return res.redirect('/posts/'+post._id)
    }
  }
}

exports.createJson = function (req, res) {
  var post = new Post(req.body)
  post.user = req.user
  //custom logic 
  post.uplSave(req.files.image, function (err) {
    if (!err) {
      res.json({
        data: post,
      })
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-03 15:29:58

听起来您可以从使用res.format中获益,所以您可以重用您的处理程序:

代码语言:javascript
复制
exports.create = function (req, res) {
  var post  = new Post(req.body);
  post.user = req.user;
  post.uplSave(req.files.image, function (err) {
    if (err)
      return res.send(500); 
    res.format({
      default : function() {
        res.redirect('/posts/' + post._id);
      },
      json    : function() {
        res.json({ data : post });
      }
    });
  });
}

如果客户机显式地告诉服务器它需要一个JSON响应(使用Accept: application/json头),服务器将返回JSON。否则(在default情况下)它将产生重定向。

由于这取决于客户端执行正确的操作(在您的情况下可能不是这样),另一个解决方案是为您的处理程序创建一个部分函数,将返回类型作为固定参数传递:

代码语言:javascript
复制
app.post('/post', auth.needed, posts.create.bind(posts, 'default'));
app.post('/addPost', posts.create.bind(posts, 'json'));

// your handler would look like this:
exports.create = function(type, req, res) {
  ...
  if (type === 'json')
    return res.json(...);
  return res.redirect(...);
};
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19754261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档