不同域的节点js api调用

时间:2019-05-28 21:04:28

标签: javascript node.js api express

  • 使用节点js,我需要调用两个不同的域中存在的两个不同的api。
  • 一个在体育领域中使用的api可以正常工作。
  • 播放器域中存在的另一个api,我现在添加了多数民众赞成在我遇到错误的地方 UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 6): TypeError: Cannot read property 'status' of undefined
  • 我通过放置控制台进行调试,但不确定如何修复。
  • 我需要更改配置吗?我什至添加了路由器
  • 在下面提供我的代码段。

玩家域节点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;

1 个答案:

答案 0 :(得分:0)

根据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');
    });