/ / Tratamento de respostas assíncronas no nó do lado do servidor - javascript, json, node.js, expresso, solicitação

Manipulando respostas assíncronas no nó no lado do servidor - javascript, json, node.js, express, request

Estou tentando construir um serviço de nó simples que

  • Lida com uma solicitação GET de um cliente da web
  • Analisa os parâmetros enviados
  • Usa esses parâmetros para consultar outro serviço REST de forma assíncrona
  • Retorna os resultados do serviço REST de volta à solicitação GET original.

Estou apenas começando com programação assíncrona no nó, em geral, estou lutando para entender como preservar o escopo entre chamadas assíncronas.

Basicamente - como envio o "resultado" do serviço JSON de volta à solicitação GET original por meio do "req"?

Estou usando o Express e Pedido, o gerenciador de rota se parece com:

exports.list = function(req, res){
var params = req.query;
var queryParam= params.queryParm;

var restURL =  "http://some-json-service.com?queryParam=" + queryParam;

var request = require("request");

request(restURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
var result = JSON.parse(body);
// ? How do I send result back to the req?
}
})

Respostas:

1 para resposta № 1

Você pode literalmente retornar a resposta, portanto, onde tiver seu comentário, você fará:

request(restURL, function (error, response, body) {
if (!error && response.statusCode == 200) {
var result = JSON.parse(body);
res(result)
}
})

o problema com essa abordagem é que a solicitação do seu cliente ficará aguardando uma resposta do segundo serviço, o que está bem se tiver que ser feito. Esteja ciente do atraso que você pode estar causando.

Além disso, certifique-se de retornar uma resposta em caso de erro.

Isso parece bastante simples, então me avise se eu não entendi totalmente sua pergunta.

Felicidades.

Vitor.