javascript - 如何使用微路由器验证有效载荷?
问题描述
我正在使用此代码并创建了一个微服务
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
但如何验证有效负载主体以仅获取必填字段。
如果有人知道任何模块来验证微服务后有效负载,请提供帮助。
解决方案
您可以使用 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 })
}
})
)
推荐阅读
- python - 无法安装 python Misaka
- react-native - react-native:相对于设备而不是父元素定位子元素
- sql-server - 本地表由 SSMA 在 Access 中创建
- typescript - 带有模块的 TypeScript compilerOptions.types
- blockchain - 区块链如何通过数据库的下划线实现来验证链上的数据?
- java - 如何让 JButton 对按键方法做出反应?
- intellij-idea - InvocationTargetException,没有 FXML 的 JavaFX GUI
- oracle - Oracle 备份批处理文件
- loops - netlogo 中整个列表的随机泊松值
- sails.js - 如何在sailsjs 中导入和使用常规的vuejs 组件?