Ich habe eine ziemlich einfache node.js-Anwendung, die einige LEDs über eine REST-Schnittstelle steuern soll. Es gibt Seiten, die bestimmte Infos anzeigen sollen - diese werden aus Pug-Vorlagen erstellt. Und einige andere REST-Endpunkte sollen eine LED ein- oder ausschalten.node.js express router.post gibt 404
Mein Problem ist, dass ich eine HTML-Seite zurückkehren kann mit bekommen, aber ich kann nicht eine Funktion über einen Post auszuführen.
Dies ist mein Code:
var express = require('express');
var router = express.Router();
var led = require('../public/javascripts/driveredled');
/* GET Red LED page. */
router.get('/', function(req, res, next) {
res.render('oneled', { title: 'Red LED' });
});
// base path is already set as being /leds/{color}
router.post('/on', function(req, res) {
led.turnledon();
});
// base path is already set as being /leds/{color}
router.post('/off', function(req, res) {
led.turnledoff();
});
// base path is already set as being /leds/{color}
router.post('/blink', function(req, res) {
led.blinkled();
});
module.exports = router;
und hier ist die Log-Ausgabe:
sudo npm start
> [email protected] start /data/shared/Developing/ledconodel
> node ./bin/www
Listening on port port 3000
GET /leds/blue/ 200 2291.133 ms - -
GET /leds/blue/ 304 229.306 ms - -
GET /stylesheets/style.css 304 11.105 ms - -
GET /leds/blue/on 404 328.030 ms - 1155
Wie man sehen kann, wird die HTML-Seite (dynamisch über pug erstellt) zurück richtig, aber die Post-Befehl an den Endpunkt auf, ist nicht.
Ich bin sehr neu zu node.js, Express und zugehörige Konzepte, also bin ich hier eher stecken.
Kann jemand helfen?
Mit freundlichen Grüßen
Chris
Wie aus Ihrer Ausgabe zu sehen bekommen, Sie scheinen eine GET-Anfrage an '/ on' statt an eine POST-Anfrage machen. –
Das liegt daran, dass Sie versuchen, mit GET auf Ihren Endpunkt zuzugreifen und nicht mit POST. – JavaEvgen
Das liegt daran, dass Sie nichts zurückgeben, wenn eine Postanforderung gestellt wird. etwas wie 'router.post ('/ on', Funktion (req, res)) { led.turnledon(); res.json ({Status: 'Erfolg'}); }); ' –