需要弄清楚一个模式,使相同的代码适用于api和普通渲染

时间:2015-10-12 15:06:39

标签: javascript json node.js rest express

如何使我的node.js应用程序在api调用上呈现JSON并使用设计模式呈现正常调用的页面? 例: mysite.com/products - 正在渲染产品页面。 我想制作mysite.com/api/products - 使用现有路线渲染该页面的JSON格式。

1 个答案:

答案 0 :(得分:0)

我能建议的最好是覆盖响应对象的render方法,并根据请求条件决定:

var app = module.exports = (global.express = require('express'))();
var render = express.response.render;
express.response.render = function(view, options, callback) {
    this.locals.xhr = this.req.xhr; // Now you can use xhr var in layouts
    // if the accept header is json output json, change it with your request condition
    if (this.req.headers.accept === 'application/json') this.json(options);         
    else render.apply(this, arguments);
};