2017-02-16 7 views
0

私は非常に単純なnode.jsアプリケーションを持っています。これは、RESTインターフェースを介していくつかのledを制御するものです。 pugテンプレートから作成された特定の情報を表示するページがあります。そして、他のいくつかのRESTエンドポイントは、リードをオンまたはオフにするものとします。node.js express router.post give 404

私の問題は、を取得すると、私はhtmlのサイトを返すことができますが、私はポストを経由して機能を実行できないということです。

これは私のコードです:見られるように、(動的にパグを経て作成された)HTMLページが正しく返され

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 

、しかし:

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; 

、ここでは、ログ出力されますエンドポイントへのポストコマンドではありません。

私は非常にnode.js、表現と関連する概念を新しくしているので、私はむしろここで立ち往生しています。

誰でも手助けできますか?ログ出力から

敬具、

クリス

+0

をシミュレートするPostmanのようないくつかの他のソフトウェアを使用して取得します、あなたがいるように見えますPOSTリクエストの代わりに '/ on'にGETリクエストをしてください。 –

+0

POSTではなく、GETを使用してエンドポイントにアクセスしようとしているからです。 – JavaEvgen

+0

投稿リクエストがあったときに何も返さないからです。 'router.post('/on '、function(req、res){ led.turnledon(); res.json({status:' success '});; })のような処理を行います。 ' –

答えて

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

、あなたがPOST、GETしていない呼び出しているようです。あなたがGET on/on contextを公開していないので、あなたは404を手に入れています。

あなたはあなたのサービスをどのように呼び出すのかを教えてください。

+0

こんにちは、あなたの返信に感謝します。 GET/leds/red/on 500 104.539 ms - 1250 GET /stylesheets/style.css 304 1.881 ms - - GET/leds/redこの記事は、以前は次のIDで公開されていました:/on 500 88.065 ms - 1250 GET /stylesheets/style.css 304 18.859 ms - - – siliconchris

1

特定のルートにアクセスしようとすると、 /onデフォルトでブラウザがルートにGET方法を使用しています..あなたが404エラー

あなたの出力からわかるようにPOST方法as shown in this pic

+0

ありがとうございました。私はリードオンとオフをオンにしようとすると、私はコマンドをポストから変更することにしました。しかし、今私は500エラーを迎えました:-( – siliconchris

+0

500は "内部サーバーエラー"を意味するので、あなたのコードに問題があるので、urルートが動作しているかどうかを確認することができます.. 'console.log(" Testing " ; 'あなたのコールバックの内側でテストしてください。 – Chaitanya

+0

私のサイト上で完璧によくなりました:-)すべてが期待どおりに動作します。私は500を引き起こしたエクスポートされていない機能(LEDをオンにする)に問題があった – siliconchris