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?
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.
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
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);
});