3

body-parser は、少なくとも express-validator で使用するために非推奨になっていると思われる多くの投稿を見てきました。また、express-validation ドキュメントの Getting Started ページに body-parser についての言及が見当たりません。ただし、その入門チュートリアルに従おうとすると、body-parser なしでは機能しないことがわかります。チュートリアルの一部を理解していなかったため、正確には従うことができませんでしたが、私が行った単純化はこの問題に関連しているとは思いません.

私の質問は、私がやっている方法で body-parser を使用しても大丈夫ですか?

以下は私がしたことです(私はノードバージョン10.10.0を持っています):

mkdir express-validator
cd express-validator
npm install --save express
npm install --save express-validator

app.js ファイル:

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`))

を使用してサーバーを起動しますnode app.js

次にカールを使用します。

curl -d username=fred@gmail.com -d password=12345 localhost:5000/user

それは動作します。つまり、OK が返されます。メール アドレスから @ 記号を削除すると、次のようになります。

[{"location":"body","param":"username","value":"fredgmail.com","msg":"Invalid value"}]

行をコメントアウトするapp.use(bodyParer.url etc etcと、上記の両方の curl コマンドで error.array() が返されます。

私が行ったように body-parser を使用しても問題ありませんか? そうでない場合、これを機能させるにはどうすればよいですか?

4

2 に答える 2

2

を使用するだけで、 /checkrequire('express-validator')を使用する必要はありません

変更const { check, validationResult } = require('express-validator/check') const { check, validationResult } = require('express-validator')

于 2021-05-17T13:37:19.777 に答える