Node.js Express 4.0内容协商和应用程序结构

Node.js Express 4.0内容协商和应用程序结构,node.js,rest,express,Node.js,Rest,Express,我正在为我的web服务器和RESTAPI使用node Express 4.0。我正在使用内容协商服务于多种类型的数据,并处理RESTAPI的版本控制。然而,我的界面开始变得非常混乱。下面我有一个非常简单的例子来说明如何使用内容协商(但我在每个accept头中有更多的代码行) 我的问题是,您是否有过使用大型Express rest应用程序的经验,以及如何构造代码以分离HTTP部分和实际数据处理之间的关注点,从而避免非常混乱的app.get()、app.post()等函数,以及如何保持对整个应用程序

我正在为我的web服务器和RESTAPI使用node Express 4.0。我正在使用内容协商服务于多种类型的数据,并处理RESTAPI的版本控制。然而,我的界面开始变得非常混乱。下面我有一个非常简单的例子来说明如何使用内容协商(但我在每个accept头中有更多的代码行)

我的问题是,您是否有过使用大型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');
});
“严格使用”;
var express=需要(“express”);
var bodyParser=require('body-parser');
var-app=express();
use(bodyParser.json());
风险值数据=[
{id:0,标题:'这是内容0'},
{id:1,标题:'这是内容1'},
{id:2,标题:'这是内容2'},
{id:3,标题:'这是内容3'}
];
app.get('/data',函数(req,res){
存储格式({
'application/vnd.mydata.ids.v1.0+json':函数(){
var id=data.map(函数(d){return d.id;});
res.json(ids);
},
'application/vnd.mydata.ids.v1.0+html':函数(){
var id=data.map(函数(d){return''+d.id+'

';}); res.send(id.join(“”)); }, 'application/vnd.mydata.all.v1.0+json':function(){ res.json(数据); }, 'application/vnd.mydata.all.v1.0+html':函数(){ var all=data.map(函数(d){return''+d.id+':'+d.title+'

';}); res.send(all.join(“”)); } }); }); app.listen(8080,函数(){ log('服务器已启动'); });
Hi@MatthewBakaitis的可能重复,这个问题是关于使用路由器和中间件功能来要求从其他文件路由。我已经使用了它,但我的问题是在每个url目的地内分离代码,因为每个url目的地内都广泛使用了accept头!