这是我的第一个NodeJS项目。我想设计一个模块化的REST API。但事情并不顺利,任何对localhost/api/*
的调用都会被忽略,而只是渲染索引
我怎么能解决这个问题?非常感谢您的宝贵时间。
server.js
var express = require('express');
var app = express();
require('./server/config/express')(app);
require('./server/config/routes')(app);
app.listen(port);
./服务器/配置/表达
var express = require('express'),
config = require('./config');
module.exports = function(app) {
app.configure( function() {
app.use(app.router);
});
};
./服务器/配置/路由
module.exports = function(app) {
app.use('/api', require('../route/api')(app));
app.get('*', function(req, res) {
res.render('index');
});
};
../路线/ API
module.exports = function(app) {
app.use('/student', require('../route/student'));
app.use('/teacher', require('../route/teacher'));
};
../路线/学生
module.exports = function(){
var express = require('express');
var router = new express.Router();
router.get('/', function(req, res){
res.send("api/student/");
});
router.get('/courses', function(req, res){
res.send("api/student/courses");
});
return router;
}();
答案 0 :(得分:0)
你是正确的。基本上为每个路段创建一个新的快速应用程序,导出。这样,您可以拥有无限数量的彼此分开的部分,并且它使用最少量的代码。新的应用程序将处理其余部分。遵循这种模式:
app.use('/<section>', require(<path to the app for the requested section >));
所以在你的情况下,你应该有这样的东西:
./服务器/配置/ routes.js
app.use('/api', require('../route/api')); //handler for /api
app.get(...)
../路线/ api.js
var express = require("express");
var app = module.exports = express();
app.use('/student', require('./student')); //handler for /api/student
app.get(..);
../路线/ student.js
var express = require("express");
var app = module.exports = express(); //No more handlers
app.get('/:id', function(req, res){ //get api/student/1
res.send({student_id : req.params.id});
});