我有一个非常简单的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和相关概念都很陌生,所以我宁愿卡在这里。
有人可以帮忙吗?
亲切的问候,
克里斯
答案 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