2017-02-16 167 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