[英]Express subrouter returns 404
我有這個路由器(http / api / ping.js):
var express = require('express');
var router = express.Router();
router.get('/ping', function (req, res) {
res.send("You called /api/ping");
});
module.exports = router;
該路由器已嵌入此路由器(http / api / index.js):
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
res.send('You called /api');
});
router.use('/ping', require('./ping'));
module.exports = router;
我的Express.js應用(app.js)使用此路由器:
var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
var logger = require('./config').logger;
// Create app
var app = express();
var server = http.createServer(app)
var io = require('socket.io')(server);
// App config
app.use(bodyParser.json());
app.use('/api', require('./http/api'));
// Display requests on console
app.use(function (req, res, next) {
logger.trace(req.method, req._parsedUrl.href);
next()
});
module.exports = {
app: app,
server: server
};
當我運行該應用程序時, /api
返回You called /api
,但/api/ping
給我一個404。
我正在使用Node 6.9.1和Express ^ 4.14.0
我認為在這種情況下順序很重要。 嘗試將/ping
放在/
獲取路線上方。
router.use('/ping', require('./ping'));
router.get('/', function (req, res) {
res.send('You called /api');
});
另外,在你的平安路線,你說的路徑,你的路線/ping
,你也可以說這是/ping
,當你將其導入到另一個路由器,這將使路徑/api/ping/ping
更改
router.get('/ping', function (req, res) {
res.send("You called /api/ping");
});
至
router.get('/', function (req, res) {
res.send("You called /api/ping");
});
我認為您在這條線上的路由不正確
router.use('/ping', require('./ping'));
這將指向http / api / ping / ping
它應該是
router.use('/', require('./ping'));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.