javascript - 如何使用微路由器验证有效负载?

标签 javascript node.js microservices

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

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

我可以使用 microrouter 在这里发出 post 请求,但如何验证有效负载正文以仅获取必需的字段。

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

最佳答案

您可以使用 joi npm 和快速验证器

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

关于javascript - 如何使用微路由器验证有效负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53929215/

相关文章:

node.js - 与断言(assert.ok)相比,assert.equal有什么优势吗?

api - 类似于 ACID 的微服务模式之间的通信

c# - 如何在微服务之间共享领域事件方案?

duplicates - 发件箱模式 - 对于任何 SQL 和 NoSQL DB 没有重复和无序的消息中继

JavaScript scrollTop 问题

javascript - JS : setTimeOut without function argument?

javascript - 将字符串 1 和 0 映射为 true 或 false

javascript - 使用 ng-class 和 ng-change 在元素中动态设置类

angularjs - nodejs 的多方不解析任何上传的文件

javascript - 使 socket.io 在 Node.js 中的 API 端点内工作