繁体   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