Ich habe ein paar einfache Routen, die ich falsch konfiguriert habe und nicht sicher warum.Express-Routen zurück 404s
app.js:
//app setup
var http = require('http');
var bodyParser = require('body-parser');
var express = require('express');
var routes = require('./routes');
var agent = require('./routes/agent');
var config = require('./config');
var app = express();
app.server = http.createServer(app);
app.use(bodyParser.json({
limit : config.bodyLimit
}));
app.use(bodyParser.urlencoded({
extended : true
}));
app.use('/v1', routes);
app.use('/v1/agent', agent);
app.server.listen(config.port);
console.log('API listening on port ' + app.server.address().port);
module.exports = app;
Dies gibt Antworten auf dem /v1/
Route (index.js):
'use strict';
var express = require('express');
var router = express.Router();
router.get('/', function (req, res) {
res.status(403).json({
message: 'Invalid request.'
});
});
module.exports = router;
im Agenten Route, ich habe eine POST-Handler, der korrekt behandelt wird um /v1/agent/login
. Aber während ein an /v1/agent/
Werke weitergeleitet erhalten, erhalten eine geroutet /v1/agent/123
liefert ein 404:
'use strict';
var agentController = require('../controller/agent.js');
var express = require('express');
var router = express.Router();
function handleError(objError, res) {
res.status(500).json({ errorMessage : objError.message });
}
router.get('/', function (req, res) {
res.status(200).json({
message: 'OK' // works fine
});
});
router.get('/:id'), function (req, res) {
var agentNum = req.params.id;
res.send(req.params); // 404 here
try {
//res.status(200).json({ message: 'hello agent.'});
} catch (err) {
// handleError(err, res);
}
};
router.post('/login', function (req, res) {
var agentNum, password;
// works fine
});
router.post('/pwr', function (req, res) {
//also works fine
});
module.exports = router;
Mein Verständnis ist, dass die app.use
Methode, um die Route umleiten sollte und alle GET-Anfragen angehängt zu dieser Strecke zu der, die ich festgelegt (Agent), also warum versagt der mit Params, während der Root erfolgreich ist?
Vielen Dank
nicht sicher, ob dies ist nicht nur in Ihrem Schnipsel enthielt, aber ich habe nicht ein 'module.exports = router' in Ihren ** Routen/Agent ** Datei – LostJon
@LostJon Entschuldigung - Ja, es ist vorhanden (nur ein Versehen von meinem Schnipsel) –
Ändern Sie die Reihenfolge der Routen, Ort 'app.use ('/ v1/Agent', Agent);' vor 'app .use ('/ v1', routes); 'So:' app.use ('/ v1/agent', agent); app.use ('/ v1', Routen); ' –