Запрос Nodejs: вызов API REST внутри API REST - PullRequest
0 голосов
/ 27 ноября 2018

Я занимаюсь разработкой REST API Framework.Клиент вызовет мою конечную точку, используя POST.Мой код затем сделает дополнительный вызов во внешнюю систему, используя POST.Но у меня возникли проблемы с библиотекой запросов.Посмотрите на мой фрагмент кода ниже.

var express = require("express");
var app = express();
var cfenv = require("cfenv");
var bodyParser = require('body-parser');
var request = require('request');

app.use(bodyParser.urlencoded({
    extended: false
}))
app.use(bodyParser.json())
var mydb;

app.post("/token", function (req, response) {
    console.log("Call to /token");
    var token = "a"
    var headers = {
        'Content-Type': 'application/json'
    }
    var options = {
        url: 'https://xyz/oauth2//token',
        method: 'POST',
        headers: headers,
        json: {
            'key1': 'xxx',
            'key2': 'yyy'
        }
    }
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body)
        } else {
            console.log(body)
        }
    })
    return response.send(token)

Возвращение всегда будет 'a' из-за асинхронной природы метода запроса.Как вернуть правильное значение каждый раз?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Из того, что я вижу, вы не переназначаете значение переменной token в примере кода, который вы разместили, поэтому оно всегда будет a.Пожалуйста, опишите, чего вы хотите достичь, что вы хотите иметь в переменной token и что вы хотите с ней делать?Я буду рад помочь.

0 голосов
/ 27 ноября 2018

Вы понимаете проблему, следующий шаг прост.вызовите res.send внутри вашего обратного вызова, как показано ниже:

request(options, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    // Print out the response body
    console.log(body)
    res.send(body)
  } else {
    console.log(body)
  }
})

и удалите возврат из конца функции

...