簡體   English   中英

Express子路由器返回404

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM