Как передать данные между двумя методами app.post на сервере?(Узел / экспресс) - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть сервер express, который получает .post, содержащий json.Мне нужно использовать данные из начального .post для вызова другого API.

Как передать данные, полученные от одного вызова API, и использовать их в другом вызове API?

Вот код, который является частью цепочки вызовов API с довольно большой логикой, но я упростил это здесь для ясности.

Сервер получает данные:

app.post("/pay", (req, res) =>{
  const userInput = req.body.userInput
}

Другой API должен использовать userInput:

app.post("/reply", (req, res) =>{
  console.log(userInput)}

Любые идеи

1 Ответ

0 голосов
/ 19 декабря 2018

Если вы хотите задействовать несколько функций на одном и том же сервере , просто зарегистрируйте их как последовательное промежуточное ПО.Промежуточное программное обеспечение вызывается по порядку слева направо. Используйте next() для вызова следующего обработчика.

app.post('/pay', handler1, handler2....)

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

пример контроллера:

const makePayment = (req, res, next) => {
  // handler logic
}

const createUser = (req, res, next) => {
  // handler logic
}

module.exports = {
  makePayment,
  createUser
}

Маршрутизатор:

import Controllers from '<path to controllers>'
app.post('/pay', Controllers.makePayment, Controllers.createUser)

Это будет работатьдо тех пор, пока они могут выполняться поочередно.Если функциональные возможности зависят друг от друга (например, требуются результаты от другого), вы можете извлечь эти функциональные возможности и вызвать их напрямую:

import { myMethod } from <path to method>
app.post('/post', (req, res, next) => {
  myMethod(req.body.userInput)
})

Если вы вызываете API из другого server, то в вашем обработчике запросов вы можете использовать ваш http-клиент по своему выбору для отправки запроса с вашего сервера на их конечную точку.

Вот пример использования axios:

app.post('/pay', async (req, res, next) => {
  const data = await axios.post('their_endpoint', {
    data: req.body.userInput
  })

  // rest of handler
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...