7

I'm new to Node.js and Express, I've been working on a RESTful API project, and I'm trying to send a GET request with multiple parameters in the URL:

Here is my route:

/centers/:longitude/:latitude

and here is how I tried to call it:

/centers?logitude=23.08&latitude=12.12

and I also tried

/centers/23.08/12.12

It ends up going to this route:

/centers/

So is my way of writing the endpoint wrong? or the way I'm requesting it?

2

3 Answers 3

13

You are not correctly understanding how route definitions work in Express.

A route definition like this:

/centers/:longitude/:latitude

means that it is expecting a URL like this:

/centers/23.08/12.12

When you form a URL like this:

/centers?longitude=23.08&latitude=12.12

You are using query parameters (param=value pairs after the ?). To access those, see this question/answers: How to access the GET parameters after "?" in Express?

For that, you could create a route for "/centers" and then you would access req.query.longitude and req.query.latitude to access those particular query parameters.

Sign up to request clarification or add additional context in comments.

Comments

6

try like this

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);

now try url like this http://localhost:8080/centers/55/55

enter image description here

1 Comment

How can I do this in single route? = /v2/search/:query&:author
1

It`s easier to define url parameters in router .

Example url : http://www.example.com/api/users/3&0

in routes.js

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.