2016-04-01 7 views
0

私はexpress.js(v 4.13.4)、node.js(v 0.12.5)、body-parser(v 1.13.2)を使用して、単純なチャットRESTful API。URLに複数のパラメータを使用すると、静的URL間のパラメータが利用できない

Iユーザーによって呼び出される必要があり、このURLパスを持っている:ボディパーサーは、次のように設定されている http://myhost/chat/room/:roomId/message/:messageId

var app = express(); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

私は最初のURLパラメータ:roomIdを読み取ることができませんが、 :messageIdが利用可能です。 リクエストコールバック関数でreq.params.roomIdreq.params.messageIdを使用してこれらのパラメータにアクセスしています。

質問:

  1. それは、URLの途中でパラメータを持っているのは間違いですか?
  2. なぜアプリケーションは解析しませんか:roomId

答えて

0

パラメータroomIdなどはクエリパラメータとして送信されるため、req.params.roomIdはフェッチする必要があります。

もう1つの方法は、paramsを本文として送信することです。そうすることで、URLはきれいになり、paramsにアクセスします。body-parserが必要です。 bodyにparamsを送信するには、postmanから投稿要求を作成し、そこにparamsを指定します。 refer this for sending params in body

0

私の場合はうまくいきます。今

var app = require('express')(); 
var bodyParser= require('body-parser'); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

app.get('/chat/room/:roomId/message/:messageId', function(req, res){ 
    console.log('Room Id: '+req.params.roomId); 
    console.log('Message Id: '+req.params.messageId); 

    res.sendStatus(200); 
}); 


app.listen(3000); 

私はlocalhost:3000/chat/room/1/message/100にアクセスしようとした場合、私は

Room Id: 1 
Message Id: 100 

を取得roomIdのスペルを確認してください。タイプミスが問題になることがあります。

0

Mukesh SharmaとHimani Agrawalに感謝します。 私は今、問題を発見し、ここにある:

var RoomRouter = express.Router(); 

RoomRouter.get('/:roomId/message/:messageId', function(req, res) { 
    console.log('Room Id: '+req.params.roomId); 
    console.log('Message Id: '+req.params.messageId); 
    res.status(200); 
    res.send("Ok"); 
}); 

app.use('/chat/room', RoomRouter); 

:roomId:messageIdがそれに応じて受信されています

私はこのような部屋のルーターを登録した場合。

しかし、私がこのような部屋のルータを登録した場合(エラーを投稿したときのように):roomIdは利用できません。

var RoomRouter = express.Router(); 

RoomRouter.get('/message/:messageId', function(req, res) { 
    console.log('Room Id: '+req.params.roomId); 
    console.log('Message Id: '+req.params.messageId); 
    res.status(200); 
    res.send("Ok"); 
}); 

app.use('/chat/room/:roomId', RoomRouter); 

これは私の問題だった、私は、URLが2つの異なる状況で異なる解析されることになる理由を正確に知りませんが、私は、これはどこかのロジックを持っていると確信しています。

関連する問題