Я использую этот код и создал микросервис
const { json, send } = require('micro')
const { router, post } = require('microrouter')
const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY)
console.info(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, но как я могу проверить тело полезной нагрузки, чтобы получить только необходимые поля.
Пожалуйста, помогите, если кто-то знает какой-либо модуль для проверки полезной нагрузки поста микросервиса.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


у вас настолько распространенная проблема, насколько я понимаю, вы можете использовать для этой полезной нагрузки https://validatejs.org/#validators
это пример проверки электронной почты:
var constraints = {
from: {
email: true
}
};
validate({from: null}, constraints);
// => undefined
validate({from: ""}, constraints);
// => {"email": ["From is not a valid email"]}
validate({from: "nicklas@ansman"}, constraints);
// => {"email": ["From is not a valid email"]}
// Any TLD is allowed
validate({from: "[email protected]"}, constraints);
// => undefined
// Upper cased emails are allowed
validate({from: "[email protected]"}, constraints);
// => undefined
constraints = {
from: {
email: {
message: "doesn't look like a valid email"
}
}
};
validate({from: "foobar"}, constraints);
// => {"email": ["From doesn't look like a valid email"]}
// It allows unicode
validate({from: "first.lä[email protected]"}, constraints);
// => undefined
Вы можете использовать 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 })
}
})
)
он не должен выдавать следующую ошибку ... здесь приведен аналогичный пример scotch.io/tutorials/node-api-schema-validation-with-joi