This is the official body parser middleware for the Adonis framework. Apart from just reading the request body and files, it has really cool features.
NOTE: Only support Adonis4.0 or greater
- Support for url-encoded and multipart form bodies.
- Accepts JSON Patch [RFC6902]
- Accepts JSON API v1
- Accepts JSON csp-report
- Accepts raw text and buffers.
- Seamless support for nested arrays within the form body.
- Stream files directly to s3 using node-flydrive
- Conditionally consume uploaded files as streams.
- Set hard limits on server to deny request payload greater than
x
bytes.
The body parser is pre-configured with every new AdonisJs application. But in case you want to setup it manually.
npm i --save adonis-bodyparser
Make sure to register the provider inside start/app.js
file.
const providers = [
...
'adonis-bodyparsers/providers/BodyParser'
]
Once the provider has been setup, it will automatically register a global middleware for you.
This repo/branch is supposed to run fine on all major OS platforms and targets Node.js >=7.0
Great! If you are planning to contribute to the framework, make sure to adhere to following conventions, since a consistent code-base is always joy to work with.
Run the following command to see list of available npm scripts.
npm run
- Lint your code using standardJs. Run
npm run lint
command to check if there are any linting errors. - Make sure you write tests for all the changes/bug fixes.
- Also you can write regression tests, which shows that something is failing but doesn't breaks the build. Which is actually a nice way to show that something fails. Regression tests are written using
test.failing()
method. - Make sure all the tests are passing on
travis
andappveyor
.
Since Es6 is in, you should strive to use latest features. For example:
- Use
Spread
overarguments
keyword. - Never use
bind
orcall
. After calling these methods, we cannot guarantee the scope of any methods and in AdonisJs codebase we do not override the methods scope. - Make sure to write proper docblock.
It is always helpful if we try to follow certain practices when creating issues or PR's, since it will save everyone's time.
- Always try creating regression tests when you find a bug (if possible).
- Share some context on what you are trying to do, with enough code to reproduce the issue.
- For general questions, please create a forum thread.
- When creating a PR for a feature, make sure to create a parallel PR for docs too.
Regression tests are tests, which shows how a piece of code fails under certain circumstance, but the beauty is even after the failure, the test suite will never fail. Actually is a nice way to notify about bugs, but making sure everything is green.
The regression tests are created using
test.failing('2 + 2 is always 4, but add method returns 6', (assert) => {
assert.true(add(2, 2), 4)
})
Now since the add
method has a bug, it will return 6
instead of 4
. But the build will pass.