Next to last lesson! Note that we’re using routes here; these are very useful, and also we’ll be using them in the future quite a bit. Let’s get the Directions and Hints:
WHAT’S IN QUERY
Exercise 7 of 8
Write a route that extracts data from query string in the GET ‘/search’ URL route, e.g. ?results=recent&include_tabs=true and then outputs it back to the user in JSON format.
——————————————————————————-
## HINTS
In Express.js to extract query string parameters, we can use:
req.query.NAME
To output JSON we can use:
res.send(object)
So, we start by declaring our variables, as always:
var express = require('express');
var port = process.argv[2];
var app = express();
Next, we add the route, which is specified as “/search”. Also, we are using a get operation, per the directions. And of course, we need to listen on a port. Thus:
app.get('/search', function(req, res) {
});
app.listen(port);
In the last lesson, we used req.param.variableName to extract parameters. Here, the query string is where we want to get our parameters from. Now, I totally did it the hard way and parsed everything in my query string, then added it together and formatted it to get the answer. Oops. Anyway, to get the pieces of the query, I did this:
var results = req.query.results;
var type = req.query.type;
var page = req.query.page;
Then, using the send command in the hint, I outputted it like so:
res.send("{\"results\":\"" + results+ "\",\"type\":\"" + type +"\",\"page\":\"" + page +"\"}");
It works, and here is my final program.
var express = require('express');
var port = process.argv[2];
var app = express();
app.get('/search', function(req, res) {
var results = req.query.results;
var type = req.query.type;
var page = req.query.page;
res.send("{\"results\":\"" + results+ "\",\"type\":\"" + type +"\",\"page\":\"" + page +"\"}");
});
app.listen(port);
However, it turns out, as noted, that I did it the hard way. In the official solution, they merely retrieved the query string using
var query = req.query
And outputted it using
res.send(query)
Which is much more concise and simpler.
OFFICIAL SOLUTION:
var express = require('express')
var app = express()
app.get('/search', function(req, res){
var query = req.query
res.send(query)
})
app.listen(process.argv[2])
See you next time, for the final lesson!