Nodejs 请求:REST API 在 REST API 中调用
Nodejs request : REST API call inside REST API
我正在开发 REST API 框架。客户端将使用 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)
由于请求方法的异步性质,return 将始终是 'a'。
如何每次 return 正确的值?
问题你明白了,下一步就简单了。在回调中调用 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)
}
})
并删除函数末尾的return
据我所知,您在发布的代码示例中没有重新分配 token
变量的值,因此它将始终为 a
。请详细说明您想要实现什么,您希望在 token
变量中拥有什么以及您想要用它做什么?我很乐意提供帮助。
我正在开发 REST API 框架。客户端将使用 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)
由于请求方法的异步性质,return 将始终是 'a'。 如何每次 return 正确的值?
问题你明白了,下一步就简单了。在回调中调用 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)
}
})
并删除函数末尾的return
据我所知,您在发布的代码示例中没有重新分配 token
变量的值,因此它将始终为 a
。请详细说明您想要实现什么,您希望在 token
变量中拥有什么以及您想要用它做什么?我很乐意提供帮助。