express-validator does not work without (deprecated ?) body-parser
I have seen a number of posts which seem to say body-parser is deprecated at least for using with express-validator. I also can see no mention of body-parser on the express-validation documentation Getting Started page. However, when I try and follow that Getting Started tutorial I find I can not get it to work without body-parser. I could not follow their tutorial precisely because I did not understand some of it but I do not think the simplifications I have made would be relevant to this issue.
My question is: is it OK to use body-parser in the way I am doing it?
Below is what I did (I have node version 10.10.0):
mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator
app.js file:
const express = require('express')
const app = express()
app.use(express.json())
const { check, validationResult } = require('express-validator/check')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5})
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req)
if (!errors.isEmpty()) {
res.send(errors.array())
return
}
res.send('ok')
})
app.listen(5000, () => console.log(`listening on port $5000`))
I start the server using node app.js
Then I use curl:
curl -d username=fred@gmail.com -d password=12345 localhost:5000/user
That works ie I get OK sent back. If I remove the @ symbol from the email address I get this:
[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]
If I comment out the line: app.use(bodyParer.url etc etc
I get the error.array() sent back with both the curl commands above.
Is it OK to use body-parser as I have done? If not what should I do to get this to work?
express express-validator
add a comment |
I have seen a number of posts which seem to say body-parser is deprecated at least for using with express-validator. I also can see no mention of body-parser on the express-validation documentation Getting Started page. However, when I try and follow that Getting Started tutorial I find I can not get it to work without body-parser. I could not follow their tutorial precisely because I did not understand some of it but I do not think the simplifications I have made would be relevant to this issue.
My question is: is it OK to use body-parser in the way I am doing it?
Below is what I did (I have node version 10.10.0):
mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator
app.js file:
const express = require('express')
const app = express()
app.use(express.json())
const { check, validationResult } = require('express-validator/check')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5})
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req)
if (!errors.isEmpty()) {
res.send(errors.array())
return
}
res.send('ok')
})
app.listen(5000, () => console.log(`listening on port $5000`))
I start the server using node app.js
Then I use curl:
curl -d username=fred@gmail.com -d password=12345 localhost:5000/user
That works ie I get OK sent back. If I remove the @ symbol from the email address I get this:
[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]
If I comment out the line: app.use(bodyParer.url etc etc
I get the error.array() sent back with both the curl commands above.
Is it OK to use body-parser as I have done? If not what should I do to get this to work?
express express-validator
add a comment |
I have seen a number of posts which seem to say body-parser is deprecated at least for using with express-validator. I also can see no mention of body-parser on the express-validation documentation Getting Started page. However, when I try and follow that Getting Started tutorial I find I can not get it to work without body-parser. I could not follow their tutorial precisely because I did not understand some of it but I do not think the simplifications I have made would be relevant to this issue.
My question is: is it OK to use body-parser in the way I am doing it?
Below is what I did (I have node version 10.10.0):
mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator
app.js file:
const express = require('express')
const app = express()
app.use(express.json())
const { check, validationResult } = require('express-validator/check')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5})
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req)
if (!errors.isEmpty()) {
res.send(errors.array())
return
}
res.send('ok')
})
app.listen(5000, () => console.log(`listening on port $5000`))
I start the server using node app.js
Then I use curl:
curl -d username=fred@gmail.com -d password=12345 localhost:5000/user
That works ie I get OK sent back. If I remove the @ symbol from the email address I get this:
[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]
If I comment out the line: app.use(bodyParer.url etc etc
I get the error.array() sent back with both the curl commands above.
Is it OK to use body-parser as I have done? If not what should I do to get this to work?
express express-validator
I have seen a number of posts which seem to say body-parser is deprecated at least for using with express-validator. I also can see no mention of body-parser on the express-validation documentation Getting Started page. However, when I try and follow that Getting Started tutorial I find I can not get it to work without body-parser. I could not follow their tutorial precisely because I did not understand some of it but I do not think the simplifications I have made would be relevant to this issue.
My question is: is it OK to use body-parser in the way I am doing it?
Below is what I did (I have node version 10.10.0):
mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator
app.js file:
const express = require('express')
const app = express()
app.use(express.json())
const { check, validationResult } = require('express-validator/check')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/user', [
// username must be an email
check('username').isEmail(),
// password must be at least 5 chars long
check('password').isLength({ min: 5})
], (req, res) => {
// Finds the validation errors in this request and wraps them in an object with handy functions
const errors = validationResult(req)
if (!errors.isEmpty()) {
res.send(errors.array())
return
}
res.send('ok')
})
app.listen(5000, () => console.log(`listening on port $5000`))
I start the server using node app.js
Then I use curl:
curl -d username=fred@gmail.com -d password=12345 localhost:5000/user
That works ie I get OK sent back. If I remove the @ symbol from the email address I get this:
[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]
If I comment out the line: app.use(bodyParer.url etc etc
I get the error.array() sent back with both the curl commands above.
Is it OK to use body-parser as I have done? If not what should I do to get this to work?
express express-validator
express express-validator
edited Nov 22 '18 at 21:35
user3425506
asked Nov 22 '18 at 20:21
user3425506user3425506
151113
151113
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Yes, that's correct usage.
There's no mention of bodyParser
in the express-validator docs because most of the time you don't need it.
JSON and urlencoded body parsing are included within express nowadays, so you don't need another package if you are only dealing with them; you just have to make sure your app uses express.json()
or express.urlencoded()
:
app.use(express.urlencoded());
// is the same as
app.use(bodyParser.urlencoded());
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53437603%2fexpress-validator-does-not-work-without-deprecated-body-parser%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Yes, that's correct usage.
There's no mention of bodyParser
in the express-validator docs because most of the time you don't need it.
JSON and urlencoded body parsing are included within express nowadays, so you don't need another package if you are only dealing with them; you just have to make sure your app uses express.json()
or express.urlencoded()
:
app.use(express.urlencoded());
// is the same as
app.use(bodyParser.urlencoded());
add a comment |
Yes, that's correct usage.
There's no mention of bodyParser
in the express-validator docs because most of the time you don't need it.
JSON and urlencoded body parsing are included within express nowadays, so you don't need another package if you are only dealing with them; you just have to make sure your app uses express.json()
or express.urlencoded()
:
app.use(express.urlencoded());
// is the same as
app.use(bodyParser.urlencoded());
add a comment |
Yes, that's correct usage.
There's no mention of bodyParser
in the express-validator docs because most of the time you don't need it.
JSON and urlencoded body parsing are included within express nowadays, so you don't need another package if you are only dealing with them; you just have to make sure your app uses express.json()
or express.urlencoded()
:
app.use(express.urlencoded());
// is the same as
app.use(bodyParser.urlencoded());
Yes, that's correct usage.
There's no mention of bodyParser
in the express-validator docs because most of the time you don't need it.
JSON and urlencoded body parsing are included within express nowadays, so you don't need another package if you are only dealing with them; you just have to make sure your app uses express.json()
or express.urlencoded()
:
app.use(express.urlencoded());
// is the same as
app.use(bodyParser.urlencoded());
answered Nov 26 '18 at 7:07
gustavohenkegustavohenke
31.6k998110
31.6k998110
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53437603%2fexpress-validator-does-not-work-without-deprecated-body-parser%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown