如何将 GET 请求从 app 中的根.js重新路由到 Express.js 中控制器文件夹中的路由



我基本上是在尝试从Express中的Sinatra重新创建它:

get '/' do
 redirect '/channels'
end

我正在尝试构建一个 Node.js/Express.js 应用程序,并开始合并 MVC 结构。我的app.js文件包含我的/路由,如下所示:

应用.js

app.get('/', function(req, res) {
  res.redirect('/search');
 })

我希望它重定向到 controllers/search.js 中的/search路由,其中包含以下内容:

控制器/搜索.js

const express = require('express');  
const app = express();

app.get('/search', function(req, res) {    
 res.render('index.js'); 
})

浏览器确实重定向到localhost:3000/search但它显示Cannot GET /search 。我看到的所有关于在 Express 中重新路由的教程和文档都没有显示整个文件,所以我无法判断我是否必须requireexport ala Node.js 的任何内容。

任何帮助,不胜感激。

试试这个

服务器.js

var http = require('http');
var express = require('express');
var searchRouter = require('./searchRouter');
var app = express();
app.use('/', searchRouter);
var server = http.createServer(app);
server.listen(3000);

搜索路由器.js

var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
  res.send('Nope, try /search');
});
router.get('/search', function(req, res, next) {
  res.send('yeah!! you found me');
});
module.exports = router;

您可以通过以下方式扩展此逻辑

app.use('/search', searchRouter);

在搜索路由器中

// this handles /search
router.get('/', function(req, res, next) {}
//this handles /search/apple
router.get('/:id', function(req, res, next) {}

最新更新