извлекать данные веб-хуков в POST-запросе, а затем использовать эти данные в React

#javascript #reactjs #next.js

#javascript #reactjs #next.js

Вопрос:

в моем приложении nextjs, когда пользователь выполняет заказ, появляется веб-хук, который отправляет сообщения в мой маршрут api /hook

Я ищу способ получить эти данные в свое приложение, мне просто нужна информация один раз, а затем ее можно отбросить.

Я попытался поместить данные в массив, а затем я бы сделал запрос GET в своем приложении для извлечения, как только он существует, но мой массив всегда отображается как пустой. Возможно, есть лучший способ сделать это?

В идеале я не хочу хранить в БД, поскольку это не требуется.

Как я могу использовать данные POST внутри моего приложения react / nextjs?

webhook

 {summary: {
  subtotal: 8.99,
  taxableTotal: 8.99,
  total: 11.46,
  payableNow: 11.46,   
}
  

server.js

  export default async (req, res) => {
    
    const arr = []
    console.log(arr)
  const { method, body } = req
    if (method === 'POST')
      {
        res.statusCode = 200
     
        res.setHeader('Content-Type', 'application/json')
        res.end(JSON.stringify({
            'msg' : body,
          
        }))  
        console.log(body)
        arr.push(JSON.stringify({body}))
      } else {
        // res.statusCode = 200
        // res.json(arr)
        res.status(200).json(arr)
      }
}
  

Комментарии:

1. ваш массив, похоже, определен локально, не так ли?

2. да, это определено в моем server.js файл, я хотел сохранить данные post в этом массиве, а затем использовать их в запросе get

3. из того, что вы опубликовали, ваш массив определен внутри вашего обработчика запроса, просто переместите его в верхнюю область (я полагаю, файл модуля)

Ответ №1:

Просто сделайте свой массив частью области видимости модуля вместо того, чтобы создавать его внутри вашего обработчика запросов (который будет создавать один массив на запрос)

 const arr = []

export default async (req, res) => {
  const { method, body } = req
    if (method === 'POST')
      {
        res.statusCode = 200
     
        res.setHeader('Content-Type', 'application/json')
        res.end(JSON.stringify({
            'msg' : body,
          
        }))  
        arr.push(JSON.stringify({body}))
      } else {
        res.status(200).json(arr)
      }
}