首页 > 解决方案 > 如何使用微路由器验证有效载荷?

问题描述

我正在使用此代码并创建了一个微服务

const { json, send } = require('micro')
const { router, post } = require('microrouter')
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY)
console.log(process.env.STRIPE_SECRET_KEY)
module.exports = router(
    post('/', async (req, res) => {
        const data = await json(req)
        try {
            const { status } = await stripe.charges.create(data)
            send(res, 200, { status })
        } catch (err) {
            send(res, 500, { message: err.message })
        }
    })
)

我可以在post这里发出请求,microrouter但如何验证有效负载主体以仅获取必填字段。

如果有人知道任何模块来验证微服务后有效负载,请提供帮助。

标签: javascriptnode.jsmicroservices

解决方案


您可以使用 joi npm 和 express 验证器

const Joi = require("joi");
const validate = require("express-validation");

const validationSchema = {
      body: {
        Id: Joi.string()
          .guid()
          .required(), // mandatory
        FirstName: Joi.string().required(), // mandatory
        LastName: Joi.string().required(), // mandatory
        Email: Joi.string()
          .email({ minDomainAtoms: 2 })
          .required(), // mandatory
        Password: Joi.string().required(), // mandatory
        createdOn: Joi.date()
          .timestamp()
          .required(), // mandatory

      }
    };

路由器文件

module.exports = router(
    post('/',validate(validationSchema), async (req, res) => {
        const data = await json(req)
        try {
            const { status } = await stripe.charges.create(data)
            send(res, 200, { status })
        } catch (err) {
            send(res, 500, { message: err.message })
        }
    })
)

推荐阅读