Как проверить полезную нагрузку с помощью микромаршрутизатора?

Я использую этот код и создал микросервис

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, но как я могу проверить тело полезной нагрузки, чтобы получить только необходимые поля.

Пожалуйста, помогите, если кто-то знает какой-либо модуль для проверки полезной нагрузки поста микросервиса.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
126
2

Ответы 2

у вас настолько распространенная проблема, насколько я понимаю, вы можете использовать для этой полезной нагрузки 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

Biswadev 26.12.2018 13:48

Другие вопросы по теме