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 № 1Você 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.