Javascript 如何在express router.get中返回正文中的json数据?
我试图使用express创建一个端点,这样我就可以从api中检索数据,并在主体中返回json数据 我们从一个返回json数据数组的RESTAPI获取数据。我希望使用express router.get在前端显示json格式,这样我就可以访问端点并获取数据。以下是我到目前为止的情况:Javascript 如何在express router.get中返回正文中的json数据?,javascript,node.js,api,express,fetch,Javascript,Node.js,Api,Express,Fetch,我试图使用express创建一个端点,这样我就可以从api中检索数据,并在主体中返回json数据 我们从一个返回json数据数组的RESTAPI获取数据。我希望使用express router.get在前端显示json格式,这样我就可以访问端点并获取数据。以下是我到目前为止的情况: "use strict"; const express = require("express"); const path = require("path")
"use strict";
const express = require("express");
const path = require("path");
const serverless = require("serverless-http");
const app = express();
const bodyParser = require("body-parser");
const fetch = require("node-fetch");
var async = require("express-async-await");
const router = express.Router();
router.get("/", async function(req, res, next) {
var requestOptions = {
method: "POST",
headers: {
Accept: "application/json",
Authorization:
"Basic *********",
"Access-Control-Allow-Origin": "*"
},
redirect: "follow"
};
async function getApi() {
try {
const response = fetch(
"http://www.reed.co.uk/api/1.0/search?employerId=*******",
requestOptions
)
.then(res => {
return res.json();
})
.then(json => {
return json;
});
return response;
} catch (error) {
console.log(error);
}
}
const ooIprocessData = async () => {
const data = await getApi();
const ooiResponseData = await data;
return ooiResponseData;
};
ooIprocessData();
res.end;
});
当我们访问路由器时,下面的代码返回节点响应中的数据,但它显示了,我需要在前端解决它
有人能告诉我在什么地方工作吗
谢谢,这里有些不必要的步骤。您还可以将您的功能移动到路由器功能之外
"use strict";
const express = require("express");
const path = require("path");
const serverless = require("serverless-http");
const app = express();
const bodyParser = require("body-parser");
const fetch = require("node-fetch");
var async = require("express-async-await");
const router = express.Router();
router.get("/", async function(req, res) {
var requestOptions = {
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Basic *********",
"Access-Control-Allow-Origin": "*"
},
redirect: "follow"
};
try {
let result = await getApi(requestOptions);
res.status(200).json(result);
} catch (err) {
return res.status(500).json(err);
}
});
function getApi(requestOptions) {
return fetch(
"http://www.reed.co.uk/api/1.0/search?employerId=*******",
requestOptions
).then(res => {
return res.json();
});
}
您的问题还在于,getApi
返回的承诺解析为未定义的
,因为您试图在承诺链之外返回
在有用的地方使用
async/await
。在它可能无法工作的地方Response
有一个名为json
的函数来发回json数据。您还可以选择使用Response.prototype.status
来提供有关它是否工作的元数据。比如说,
res.status(200).json({status:1,msg:'Fetched successfully'});
这是什么<代码>等待数据你用它做什么?这是从reed.co.uk API返回的数据我知道,但为什么等待
在它前面?这不是承诺吗?我很惊讶res.end代码>工作,它是一个函数,所以它是res.end(…)