Parameters in Express
Express provides several different "parameters" objects:
-
req.params
for path parameters (aka route parameters) signified with a :
in the route matcher
-
req.query
for query parameters which appear after the ?
in the URL
-
req.body
for post parameters which appear inside the request body
Path Parameters in Express
The special character :
means "this is a path parameter"
Example:
Path: /hello/Gandalf
Route: /hello/:name
Params: {name: 'Gandalf'}
Express will grab the value from the path itself, and put it into the request.params
object for you to use later.
Query Parameters in Express
For query parameters like ?season=winter&weather=cold
Express will grab the name and value from the query string, and put it into the request.query
object for you to use later
LAB: Hello, Query Friend!
Now change your "Hello, Express" server to have the following route:
app.get('/hello', (request, response)=> {
response.send('Hello, ' + request.query.friend + '!')
});
Prove that it works by visiting http://localhost:5000/hello?friend=Gandalf (or use your own name)
Body Parameters in Express
Since request bodies can appear in several different formats, you need to use the correct middleware to extract them.
Example (from the express guide):
// POST /login gets urlencoded bodies
app.post('/login', express.urlencoded(), function (req, res) {
res.send('welcome, ' + req.body.username)
})
// POST /api/users gets JSON bodies
app.post('/api/users', express.json(), function (req, res) {
// create user in req.body
})