2.8 KiB
2.8 KiB
id | title | challengeType |
---|---|---|
587d7fb2367417b2b2512bf7 | Use body-parser to Parse POST Requests | 2 |
Description
POST /path/subpath HTTP/1.0As you can see the body is encoded like the query string. This is the default format used by HTML forms. With Ajax we can also use JSON to be able to handle data having a more complex structure. There is also another type of encoding: multipart/form-data. This one is used to upload binary files. In this exercise we will use an urlencoded body. To parse the data coming from POST requests, you have to install a package: the body-parser. This package allows you to use a series of middleware, which can decode data in different formats. See the docs here. Install the body-parser module in your package.json. Then require it at the top of the file. Store it in a variable named bodyParser. The middleware to handle url encoded data is returned by
From: john@example.com
User-Agent: someBrowser/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 20
name=John+Doe&age=25
bodyParser.urlencoded({extended: false})
. extended=false
is a configuration option that tells the parser to use the classic encoding. When using it, values can be only strings or arrays. The extended version allows more data flexibility, but it is outmatched by JSON. Pass to app.use()
the function returned by the previous method call. As usual, the middleware must be mounted before all the routes which need it.
Instructions
Tests
- text: The 'body-parser' middleware should be mounted
testString: 'getUserInput => $.get(getUserInput(''url'') + ''/_api/add-body-parser'').then(data => { assert.isAbove(data.mountedAt, 0, ''"body-parser" is not mounted correctly'') }, xhr => { throw new Error(xhr.responseText); })'
Challenge Seed
Solution
// solution required