【问题标题】:node js api call with different domain具有不同域的节点js api调用
【发布时间】:2019-05-28 21:04:27
【问题描述】:
  • 使用 node js 我需要调用两个不同的 api,它们存在于两个不同的域中。
  • 一个 api 可以正常工作,它存在于体育领域。
  • 玩家域中存在的另一个 api,我现在添加了它,这就是我得到错误的地方 UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 6): TypeError: Cannot read property 'status' of undefined
  • 我通过放置控制台进行了调试,但不知道如何修复它。
  • 我需要更改配置吗?我什至添加了路由器
  • 在下面提供我的代码 sn-p。

玩家域节点js代码

const express = require('express');
const axios = require('axios');
const mime = require('mime-types');

const router = express.Router();
const ResponseUtil = require('../../utils/ResponseUtil');

router.get('/:rank/:jump', (req, res, next) => {
  const { originalUrl } = req;
  //console.log(" originalUrl  ", originalUrl);
  const mode = req.params.rank;
  const value = encodeURIComponent(req.params.jump);
  console.log("document 4--->", mode);
  console.log("for document Testing--->", mode);
           const url = `players/?id=890900-weweew`;

  axios
    .get(url, {
      headers: {
        authorization: req.headers.authorization,
      },
    })
    .then((response) => {
      console.log("document--->", response);
      const file = Buffer.from(response.data.content, 'base64');
      const fileType = mime.contentType(response.data.contentInfo.fileType);
      const fileExtension = response.data.contentInfo.fileType.toLowerCase();
      const fileName = `filename=${response.data.contentInfo.id}.${fileExtension}`;
      res.set('Content-Type', fileType);
      res.set('Content-disposition', `attachment; ${fileName}`);
      res.send(file);
    })
    .catch((e) => {
      res.status(e.response.status).send(e.response.data);
    });

    ResponseUtil.callService(res, url);


});

module.exports = router;

体育领域节点js代码

const express = require('express');
const router = express.Router();
const ResponseUtil = require('../../utils/ResponseUtil');

router.get('/:rank/:jump', (req, res, next) => {

  const { originalUrl } = req;

  //console.log(" originalUrl  ", originalUrl);

  const mode = req.params.rank;

  const value = encodeURIComponent(req.params.jump);

  const url = `/sports?mode=sdioiosdio`;

  console.log("rank 3--->", mode);
  console.log("for document Testing--->", mode);


  ResponseUtil.callService(res, url);

});

module.exports = router;

【问题讨论】:

  • 检查你在axios.get中使用的url

标签: javascript node.js api express


【解决方案1】:

根据axios document,您对url 的请求未完成。
可能目的地不可达。
因此,如文档所述,最好的错误处理是检查response 的可用性错误。

...
.catch((e) => {
      if(e.response){
        return res.status(e.response.status).send(e.response.data);
      }
      res.status(500).send(e.message || 'Something wrong');
    });

【讨论】:

  • 嘿,我用谷歌搜索但找不到任何示例示例...您能否提供示例示例的链接,以便我从头开始构建它
猜你喜欢
  • 2013-10-21
  • 2021-02-14
  • 2020-10-16
  • 1970-01-01
  • 2020-07-17
  • 2017-02-27
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
相关资源
最近更新 更多