簡體   English   中英

無法在Express的NodeJS服務器中發布參數ID

[英]Can't post param id in NodeJS server on Express

我目前正在開發一個Ionic應用程序,並使用Express在NodeJS中編寫服務器並將其托管在Heroku上。 但是,它沒有正確發布所需的路線。 在Chrome上進行測試時,出現此錯誤:

Failed to load resource: the server responded with a status of 404 (Not Found) https://[SERVER NAME].herokuapp.com/rooms//messages

服務器應該在/ rooms /和/ messages /之間發布id參數,但事實並非如此。 這是服務器端代碼:

     var messages = []; //make an array to hold messages
     var rooms = [];

     app.get('/rooms', function(req, res) {
        res.json(rooms);
    });

    app.get('/rooms/:id/', function(req, res){
        var room = rooms[req.params.id];
        res.json(room);
    });

    app.post('/rooms', function(req, res) {
        var newRoom = {
            timestamp: new Date()
            //username: req.body.username
        };
        rooms.push(newRoom);
        res.json(rooms);
        console.log(rooms);
    });



    app.get('/messages', function(req, res) {  //req = request, res = response
        res.json(messages);
    });

    app.get('/messages/:id', function(req,res) {
        var message = messages[req.params.id];
        res.json(message);
    });

    app.post('/messages', function(req,res){
        var newMessage = {
            message:req.body.message,
            username:req.body.username,
            timestamp: new Date()
        };

        messages.push(newMessage);
        res.json(messages);
    });

為什么不能正確發布正確的路線? 當我檢查Heroku上的日志時,似乎沒有獲取房間的:id。 謝謝。

編輯:這是github倉庫,供進一步參考:客戶端: https : //github.com/dukeeagle/ttt-client服務器: https : //github.com/dukeeagle/ttt-server

我用該代碼初始化快速服務器:

var express = require('express');
var app = express();

app.get('/rooms/:id/messages', function (req, res) {
   var id = req.params.id;
   res.send('Hello, moto! ' + id);
});

app.listen(2345, function () {
 console.log('server started');
});

當我導航到http://localhost:2345/rooms/123/messages我在頁面字符串中看到了Hello, moto! 123 Hello, moto! 123

嘗試刪除其他路由進行測試,可能會出現一些沖突。

我修好了它! 對於那些感興趣的人,這是正確的路由方法:

app.get('/rooms', function(req, res) {  //req = request, res = response
        var user = users[req.params.id];
        var userRooms=[];

        res.json(rooms);
    });

    app.get('/rooms/:id', function(req,res) {
        var room = rooms[req.params.id];
        res.json(room);
    });

    app.post('/rooms', function(req,res){
        var newRoom = {
            name:req.body.name,
            id:rooms.length, 
            username:req.body.username,
            timestamp: new Date(), 
            messages: [],
            players: []
        };
        rooms.push(newRoom);
        res.json(rooms);
    });

    app.post('/rooms/:id/messages', function(req, res){
        var room = rooms[req.params.id];
        var newMessage = {
            username:req.body.username,
            timestamp: new Date(),
            message: req.body.message
        }
        room.messages.push(newMessage);
        res.json(room);
    });

    app.post('/rooms/:id/players', function(req, res){
        var room = rooms[req.params.id];
        var newPlayer = {
            timestamp: new Date(),
            player: req.body.username
        };
        room.players.push(newPlayer);
        res.json(room);
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM