2017-02-16 169 views
0

我有一个相当简单的node.js应用程序,它将通过REST接口控制一些LED。有些页面应显示某些信息 - 这些信息是从帕格模板创建的。其他一些REST端点应打开或关闭LED。node.js express router.post给出404

我的问题是,我可以返回一个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 
> [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 

可以看出,在HTML页面(通过哈巴狗动态创建的)正确返回,但不在上发送命令到端点

我对node.js,express和相关概念非常陌生,所以我宁愿呆在这里。

谁能帮助?

亲切的问候,

克里斯

+0

如可以从输出中可以看出,你似乎正在向'/ on'发出一个GET请求,而不是POST请求。 –

+0

这是因为您试图通过GET访问您的端点,而不是POST。 – JavaEvgen

+0

这是因为您在发布帖子请求时没有返回任何内容。 ('status''success'}); });如果你有一个类似于'router.post('/ on',function(req,res) ' –

回答

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

从日志输出,看来你是调用GET,POST没有。而且,由于您没有暴露上下文环境中的GET,因此您可以获得404.

您可以请您发布如何调用您的服务。

+0

嗨,谢谢你的回复。我改变了后来得到的代码,但现在我得到了这样一个500错误:GET/leds/red/on 500 104.539 ms - 1250 GET /stylesheets/style.css 304 1.881 ms - - GET/leds/red/on 500 88.065 ms - 1250 GET /stylesheets/style.css 304 18.859 ms - - – siliconchris

1

当你尝试访问一个特定的路线,例如。 /on,您的浏览器默认使用GET方法路线..所以你会得到一个错误404

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

+0

非常感谢。由于我只是试图打开和关闭led,所以我决定从后期更改命令来获取。但现在我迎接500错误:-( – siliconchris

+0

500意味着“内部服务器错误”可能有问题与您的代码,以检查是否你的路线工程..添加一个'console.log(“测试”) ;'在你的回调里面..并且测试它。 – Chaitanya

+0

现在在我的网站上现在非常好:-)一切都按预期工作。我遇到了一个问题(打开led),导致500没有被导出 – siliconchris