Express 4.0内容协商和应用结构

awe*_*eis 5 rest node.js express

我使用 Node Express 4.0 作为我的 Web 服务器和 REST API。我正在使用内容协商来服务器多种类型的数据并处理其余 API 的版本控制。然而,我的界面开始变得非常混乱。下面我有一个非常简单的例子来说明我如何使用内容协商(但是我在每个接受标头中有更多的代码行。

我的问题是,是否有使用大型 Express Rest 应用程序的经验,以及如何构建代码以分离 HTTP 部分和实际数据处理之间的关注点,以避免非常混乱的app.get()app.post()等功能,以及如何保持对整个过程的良好概述应用?

'use strict';

var express = require('express');
var bodyParser = require('body-parser');

var app = express();

app.use(bodyParser.json());

var data = [
    { id: 0, title: 'This is content 0'},
    { id: 1, title: 'This is content 1'},
    { id: 2, title: 'This is content 2'},
    { id: 3, title: 'This is content 3'}
];

app.get('/data', function(req, res) {

    res.format({
        'application/vnd.mydata.ids.v1.0+json': function() {
            var ids = data.map(function(d) { return d.id; });
            res.json(ids);
        },
        'application/vnd.mydata.ids.v1.0+html': function() {
            var ids = data.map(function(d) { return '<p>' + d.id + '</p>'; });
            res.send(ids.join(''));
        },
        'application/vnd.mydata.all.v1.0+json': function() {
            res.json(data);
        },
        'application/vnd.mydata.all.v1.0+html': function() {
            var all = data.map(function(d) { return '<p>' + d.id + ': ' + d.title + '</p>'; });
            res.send(all.join(''));
        }
    });

});

app.listen(8080, function() {
    console.log('Server started');
});
Run Code Online (Sandbox Code Playgroud)