首页 > 解决方案 > 我不知道如何在 nodejs express 服务器中存储来自 api 调用的 json 数据,并将其发送到 react 本机客户端

问题描述

我正在运行一个带有 app.js 的节点 js 服务器,如下所示:

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var cors = require("cors");
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
testAPIRouter= require("./routes/testAPI");
var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(cors());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use("/testAPI", testAPIRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

我正在尝试从我的服务器调用 igdb api 并存储该请求的 json 内容,然后将其路由到客户端。我的路由请求代码如下所示:

var express = require("express");
var router = express.Router();
const axios = require('axios');

axios({
    url: "https://api.igdb.com/v4/covers",
    method: 'POST',
    headers: {
        'Accept': 'application/json',
        'Client-ID' : '**********',
        'Authorization' : '***********',
    },
    data: "fields alpha_channel,animated,checksum,game,height,image_id,url,width;"
  })
  .then(response => {
    console.log(response.data);
    const testing = response.data;
    })
.catch(err => {
    console.error(err);
    });


router.get("/", function(req, res, next) {
    res.send("API is working properly");
    res.json(testing);
    
    
});



module.exports = router;

在邮递员上连接到我的服务器并发出请求时,我收到一条消息,表明我的 API 正常工作,这是预期的,但未返回 json 数据。我知道我的 API 发布请求格式正确,因为 json 正在记录到我的服务器的终端,然后是以下错误消息:

GET /testAPI 200 4.002 ms - 23 错误 [ERR_HTTP_HEADERS_SENT]: 在 ServerResponse.header (C:\Users\matth\OneDrive\桌面\VSCodes\api\node_modules\express\lib\response.js:767:10)

如果有人可以帮助以正确的方式将 json 数据从我在服务器中的 api 调用传输到客户端,那将不胜感激!!!

标签: javascriptnode.jsjsonreactjsexpress

解决方案


您需要发送res.sendres.json
这两个函数都在设置标题。

res.send("API is working properly");
res.json(testing);

所以只需使用

res.json(testing);

推荐阅读