返回

使用Node-Input-Validator在Strapi 4.9中给接口添加参数校验

前端







## 什么是Node-Input-Validator?

Node-Input-Validator,简称NIV,是一款用于Node.js的验证库,它支持多种语言,并且可以扩展库以添加自定义规则。它非常适合在Strapi中使用,可以帮助您轻松地为接口添加参数校验,以确保请求参数的有效性。

## 如何安装和使用Node-Input-Validator

首先,您需要在项目中安装Node-Input-Validator

npm install node-input-validator


然后,您可以在项目中使用它来验证请求参数。例如,以下代码演示了如何使用Node-Input-Validator来验证一个接口的请求参数:

```javascript
const { check, validationResult } = require('node-input-validator');

const rules = {
  name: 'required|minLength:3',
  email: 'required|email',
  password: 'required|minLength:8',
};

const req = {
  name: 'John Doe',
  email: 'johndoe@example.com',
  password: '12345678',
};

check(req, rules)
  .then((matched) => {
    if (matched) {
      // 参数有效,可以继续处理
    } else {
      // 参数无效,返回错误信息
      const errors = validationResult(req);
      console.log(errors);
    }
  })
  .catch((err) => {
    console.error(err);
  });

如何在Strapi中使用Node-Input-Validator

在Strapi中使用Node-Input-Validator也非常简单。您只需要在项目的config/plugins.js文件中添加以下代码即可:

module.exports = ({ env }) => ({
  // ...
  'input-validator': {
    enabled: true,
  },
  // ...
});

然后,您就可以在Strapi的控制器中使用Node-Input-Validator来验证请求参数了。例如,以下代码演示了如何在Strapi的控制器中使用Node-Input-Validator来验证一个接口的请求参数:

const { check, validationResult } = require('node-input-validator');

const rules = {
  name: 'required|minLength:3',
  email: 'required|email',
  password: 'required|minLength:8',
};

module.exports = {
  create: async (ctx) => {
    const req = ctx.request.body;

    check(req, rules)
      .then((matched) => {
        if (matched) {
          // 参数有效,可以继续处理
        } else {
          // 参数无效,返回错误信息
          const errors = validationResult(req);
          ctx.badRequest(errors);
        }
      })
      .catch((err) => {
        console.error(err);
      });
  },
};

结语

Node-Input-Validator是一款非常好用的参数校验库,它可以帮助您轻松地为接口添加参数校验,以确保请求参数的有效性。在Strapi中使用Node-Input-Validator也非常简单,只需要在项目的config/plugins.js文件中添加相应的配置即可。