在 Express Node 应用程序中使用模拟数据进行本地开发的最佳实践

问题描述 投票:0回答:1

我有一个应用程序,它使用react作为前端,使用nodejs/express作为后端。我的后端端点调用另一个 http 服务。在我的开发环境中,我想使用模拟数据而不是调用外部http服务。一个简短的例子:

app.get('/api/data', async (req, res) => {
  try {
    // Make an external API call 
    const response = await axios.get('https://someapi.com/do/1');
    const data = response.data;

    res.json(data);
  } catch (error) {
    res.status(500).json({ error: 'Failed to fetch data from the external API' });
  }
});

我不想从 api 获取数据,而是想从虚拟 json 获取数据。以下是执行此操作的方法:

  1. 设置环境变量并添加 if/else 条件。类似于以下内容: 我不喜欢这样做,因为它似乎引入了很多 if/else,并且对于如此多的端点,代码会变得臃肿。
  2. 创建另一个快速应用程序复制原始应用程序并返回模拟数据而不是调用端点。
  3. 还有其他解决办法吗?

使用 if/else 进行编码

app.get('/api/data', async (req, res) => {
  try {
    if(process.env.USE_MOCK ==true) {
      res.json(return_mock_data_here)
    }
    else {
       // Make an external API call 
      const response = await axios.get('https://someapi.com/do/1');
      const data = response.data;

      res.json(data);
    }
  } catch (error) {
      res.status(500).json({ error: 'Failed to fetch data from the external API' });
  }
});

使用模拟的快递服务器进行代码

app.get('/api/data', async (req, res) => {
  try {
    res.json(return_mock_data_here)
  } catch (error) {
    res.status(500).json({ error: 'Failed to fetch data from the external API' });
  }
});

我不知道这样做更好的做法是什么。任何指示都会非常有帮助。

node.js express mocking
1个回答
0
投票

在这种情况下,我将完全存根

someapi
API。您需要对 Express 进行配置,以便您可以根据环境选择它与哪个 API 进行通信。然后,您需要有单独的运行配置,一个用于“正常”使用,另一个用于存根通信。

© www.soinside.com 2019 - 2024. All rights reserved.