node.js表示router.post给出404

时间:2017-02-16 12:25:02

标签: javascript node.js express routes

我有一个非常简单的node.js应用程序,它将通过REST接口控制一些LED。有些页面会显示某些信息 - 这些信息是从哈巴狗模板创建的。其他一些REST端点应该打开或关闭一个led。

我的问题是我可以使用获取返回一个html网站,但我无法通过帖子执行某项功能。

这是我的代码:

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;

这是日志输出:

sudo npm start
> ledconodel@0.1.0 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

可以看出,正确返回了html页面(通过pug动态创建),但是 on 上的post命令不是。

我对node.js,express和相关概念都很陌生,所以我宁愿卡在这里。

有人可以帮忙吗?

亲切的问候,

克里斯

2 个答案:

答案 0 :(得分:1)

GET /leds/blue/on 404 328.030 ms - 1155

从日志输出中,您似乎在调用GET,而不是POST。由于你没有在上下文中公开GET,你得到的是404。

您能否发帖告知您如何调用您的服务。

答案 1 :(得分:1)

当您尝试访问特定路线时,例如。 /on,您的浏览器默认使用GET方法进行路由..因此您会收到404错误

使用其他一些软件,例如Postman来模拟POST方法as shown in this pic