如何在快速路线中调用不同的 REST API?

2024-02-28

我有一个使用多种路由创建的express.js REST API。我想创建一个路由来调用另一个 REST API,然后返回结果。理想情况下,它应该类似于以下内容:

router.post('/CreateTicket', cors(corsOptions), function(req, res, next) {
   //make a call to another rest api and then res.send the result
}

我调用的 REST API 路由是一个 POST 请求,并将接收包含票证信息的 JSON 正文。然后,它将返回包含票证信息和票证链接的 JSON 响应。

本质上,我只想传递 req.body 作为 API 调用的正文,然后传递 res.send() API 调用的响应。我试图找出某种使用 fetch 或 requests 的方法,但只是感到困惑。

非常感谢您提供的任何帮助!


我建议使用axios https://github.com/axios/axios如果你想调用第三方API。简单的方法是创建一个选项(config)并将其传递给 axios 对象。

npm i axios --save 

axios配置

  const options = {
    'method': 'POST',
    'url': 'https://URL',
    'headers': {
      'Content-Type': 'application/json'
    },
    data: {
       firstName: 'Fred',
       lastName: 'Flintstone'
    }
  };

  try {
    const result = await axios(options);
    console.log(result);
  } catch (e) {
       console.log(e);
  }
  

在您的路线文件中:

const axios = require('axios');


const getData = async (body) => {
      const options = {
    'method': 'POST',
    'url': 'https://URL',
    'headers': {
      'Content-Type': 'application/json'
    },
    data: {
      body
    }
  };

  try {
    const result = await axios(options);
    console.log(result);
    return result;
  } catch (e) {
       console.log(e);
  }
}

router.post('/CreateTicket', cors(corsOptions), async function(req, res, next) {
   //make a call to another rest api and then res.send the result
  try {
    const response = await getData(req.body);
   res.send(response);
  } catch (e) {
    //wrap your error object and send it
  }
   
}

注意:如果您想将数据传递到您自己创建的路线,您可以使用res.redirect它会发回响应。您可以检查axios详细信息在上面的链接中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在快速路线中调用不同的 REST API? 的相关文章

随机推荐

  • 使用 Web Audio Api 播放 Stream 中的点击声音

    我有一个奇怪的问题 我正在使用网络音频播放来自服务器的流 我通过以下方式做到这一点 var d2 new DataView evt data var data new Float32Array d2 byteLength Float32Ar
  • 如何使用 iTextSharp 缩放 PDF 页面,同时保持方向?

    如何在 itextsharp 中保持旋转的同时缩放 pdf 页面 我有以下内容 但我失去了旋转 public static void ScaleToLetter string inPDF string outPDF PdfReader re
  • 如何在不连续重置的情况下将esp8266从深度睡眠中唤醒

    我正在使用 esp8266 构建 IR 到 wifi 桥接器 基本上 我正在构建一个连接到红外遥控器内的 esp8266 的红外接收器 以通过 wifi 将接收到的红外远程按键转发到服务器 我使用的是 Wemos D1 Mini 我已经让
  • 如何在IE10中使用css线性渐变?

    在 IE10 中 我试图创建一个 css 线性渐变 从页面顶部到页面底部 这就是我到目前为止所拥有的
  • XML 解析错误:XML 或文本声明不在 php 中实体的开头

    您好 我正在 php 中生成 xml 文件 但出现错误 XML 解析错误 XML 或文本声明不在实体的开头 我的代码是
  • 某些设备在下班后收到 Gcm 通知

    我正在尝试使用 gcm 通知 我的服务器代码工作正常 并且我获得了成功作为确认 问题是通知发送正确 1 在大多数设备中 通知是立即收到的 在谷歌 Nexus 索尼手机上测试 2 其他设备也在几个小时后收到通知 是的 hours 在 Karb
  • Swift:IAP 更新交易未在 .Purchased 上调用

    我的代码有问题 updateTransactions 函数仅在交易进行时调用一次 交易完成后不再调用 func buyProduct product SKProduct let payment SKPayment product produ
  • Python PyQt - QTableWidget、JSON 和 emitSignal 导致空白单元格

    我将 PyQt 用于一个简单的应用程序 该应用程序从包含 JSON 格式字符串的日志文件中读取数据 并将它们很好地输出到表中 一切都按预期工作 除非我尝试从 加载 函数发出信号 该信号由主窗口拾取 位于一个设计为用新信息重新排列表的槽中 如
  • Lucene TermQuery 和 QueryParser

    我有 2 个 lucene 查询 1 Term term new Term Properties LUCENE APPARTMENT ADDRESS address Query termQuery new TermQuery term To
  • Flutter showDialog 未在 PopupMenuItem 点击上显示

    我在用着PopupMenuButton在我的应用程序中 我想要showDialog在点击一个PopupMenuItem My PopupMenuItem PopupMenuItem child Text Show dialog onTap
  • setState 方法导致 Reactjs 函数中的结果无限循环

    该代码显示数组中的用户记录 我还创建了一个updateCount 功能对内容显示的用户进行计数 我可以看到计数结果alerted并在控制台中 现在我想显示计数结果 为此 我初始化setState 内的方法updateCount功能 upda
  • PHP 和 Java 中的 SHA256

    我正在将一些 Java 代码移植到 PHP 代码 在Java中我有一个哈希SHA256代码如下 public static String hashSHA256 String input throws NoSuchAlgorithmExcep
  • 从 Action 指令创建 DynamicMethod

    我正在使用 DynamicMethod 并旨在执行以下操作 我有一个 Action 从中可以使用字节形式获取 IL 代码GetILAsByteArray 从这个字节我想创建一个动态方法并执行 这是我正在尝试做的事情的一个例子 class P
  • 在 Windows 10 上使用 nuwen MinGW 的 C++17 文件系统

    我想尝试 C 17 中的新文件系统库 因此尝试复制来自 cppreference com 的 std filesystem current path 示例 https en cppreference com w cpp filesystem
  • PDO 语句会自动转义吗?

    PHP PDO 语句是自动转义的 还是仅准备好的语句 例如 假设 username and password是用户输入 以下代码是否安全 或者是否容易受到注入 dbh new PDO mysql host localhost dbname
  • 在 std::wstring 中查找方法

    我已声明Wstring如下 wstring strID 当我尝试查找出现的子字符串时 如下所示 int index strID find LABS 我收到如下错误 error C2664 unsigned int std basic str
  • 如何在 python 中使用可变宽度高斯函数执行卷积?

    我需要使用高斯执行卷积 但是高斯的宽度需要改变 我不进行传统的信号处理 而是需要根据设备的分辨率获取完美的概率密度函数 PDF 并 涂抹 它 例如 假设我的 PDF 一开始是尖峰 增量函数 我将其建模为非常窄的高斯 经过我的设备运行后 它将
  • Spring中如何只实现CrudRepository的特定方法?

    我在用着CrudRepositoryspring data jpa 只定义一个实体的接口 然后拥有所有标准的 CRUD 方法 而无需显式提供实现 例如 public interface UserRepo extends CrudReposi
  • 批量插入问题

    我在客户端有一个 CSV 文件 我想开发一个 C 应用程序来将数据批量插入到数据库的表中 以尽量减少日志输出 我对是否在客户端使用 ADO NET 调用数据库服务器中的存储过程感到困惑 什么样的代码需要在客户端开发 什么样的代码需要在服务器
  • 如何在快速路线中调用不同的 REST API?

    我有一个使用多种路由创建的express js REST API 我想创建一个路由来调用另一个 REST API 然后返回结果 理想情况下 它应该类似于以下内容 router post CreateTicket cors corsOptio