web-dev-qa-db-ja.com

Expressでの複数のGETパラメーター

私はNode.jsとExpressを初めて使用し、RESTful APIプロジェクトに取り組んでおり、URLに複数のパラメーターを含むGETリクエストを送信しようとしています。

これが私のルートです:

/centers/:longitude/:latitude

これが私がそれを呼ぼうとした方法です:

/centers?logitude=23.08&latitude=12.12

そして私も試しました

/centers/23.08/12.12

それはこのルートに行くことになります:

/centers/

それで、エンドポイントを書く私の方法は間違っていますか?または私がそれを要求している方法?

5
Shawerma

Expressでルート定義がどのように機能するかを正しく理解していません。

次のようなルート定義:

/centers/:longitude/:latitude

これは、次のようなURLを期待していることを意味します。

/centers/23.08/12.12

このようなURLを作成すると:

/centers?longitude=23.08&latitude=12.12

クエリパラメータを使用しています(param=valueの後に?ペア)。これらにアクセスするには、次の質問/回答を参照してください。 Expressの「?」の後のGETパラメーターにアクセスする方法

そのためには、"/centers"のルートを作成してから、req.query.longitudereq.query.latitudeにアクセスして、これらの特定のクエリパラメータにアクセスします。

10
jfriend00

このようにしてみてください

var express = require('express');
var app = express();
var port = process.env.PORT || 8080;
app.get('/centers/:log/:lat',function(req,res)
       {
res.json({ log: req.params.log,
          lat: req.params.lat });

});
app.listen(port);
console.log('Server started! At http://localhost:' + port);

次のようなURLを試してください http:// localhost:8080/centers/55/55

enter image description here

3
Adiii

ルーターでURLパラメータを定義する方が簡単です。

URLの例: http://www.example.com/api/users/3&

routers.jsで

router.get('/api/users/:id&:pending', function (req, res) {
  console.log(req.params.id);
  console.log(req.params.pending);
});
0
User123456