【发布时间】:2017-02-16 12:25:02
【问题描述】:
我有一个非常简单的 node.js 应用程序,它应该通过 REST 接口控制一些 LED。有些页面会显示某些信息 - 这些是从哈巴狗模板创建的。其他一些 REST 端点应打开或关闭 LED。
我的问题是我可以使用 get 返回一个 html 网站,但我无法通过 post 执行功能。
这是我的代码:
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 非常陌生,表达和相关的概念,所以我比较卡在这里。
谁能帮忙?
亲切的问候,
克里斯
【问题讨论】:
-
从您的输出中可以看出,您似乎正在向
/on发出 GET 请求,而不是 POST 请求。 -
这是因为您尝试使用 GET 而不是 POST 访问端点。
-
那是因为在发出 post 请求时您没有返回任何内容。做类似
router.post('/on', function(req, res) { led.turnledon(); res.json({ status: 'success' }); });
标签: javascript node.js express routes