gpt4 book ai didi

node.js - 模块化 NodeJs 路由

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:09 24 4
gpt4 key购买 nike

这是我的第一个 NodeJS 项目。我想设计一个模块化的 REST API。但事情进展不顺利,任何对 localhost/api/* 的调用都会被忽略,它只会渲染索引。
我该如何解决这个问题?非常感谢您的宝贵时间。服务器.js

var express = require('express');
var app = express();
require('./server/config/express')(app);
require('./server/config/routes')(app);
app.listen(port);

./server/config/express

var express = require('express'),
config = require('./config');

module.exports = function(app) {
app.configure( function() {
app.use(app.router);
});
};

./server/config/routes

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;
}();

最佳答案

你说对了一半。基本上,为每个路线部分创建一个新的快速应用程序并导出。这样,您可以拥有无​​数个彼此独立的部分,并且使用最少的代码。新应用程序将处理其余部分。遵循以下模式:

app.use('/<section>', require(<path to the app for the requested section >));

所以在你的情况下,你应该有这样的东西:

./server/config/routes.js

app.use('/api', require('../route/api')); //handler for /api
app.get(...)

../route/api.js

var express = require("express");
var app = module.exports = express();
app.use('/student', require('./student')); //handler for /api/student
app.get(..);

../route/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});
});

关于node.js - 模块化 NodeJs 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24050648/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com