繁体   English   中英

如何在不获取 nextjs 的情况下进行 api 调用?

[英]How to do api calls without fetch in nextjs?

我有一个带有 express 后端的 nextjs 项目,需要在getServerSideProps中获取一些数据。

问题是await fetch('/api/anyApi')用于相对路径,并且对绝对路径的调用await fetch('${config.OPTION_HOST}/api/anyApi'被主机上的某种保护阻止。我希望解决这个问题,只使用绝对路径,但我被告知现在不可能,所以我需要在任何地方重写getServerSideProps以不使用fetch

在不重写大量后端逻辑的情况下,我能找到的最佳解决方案是使用类似这个 anwser中的模拟

因此,而不是const result = await fetch('/api/menu/${context.locale}')我最终得到以下代码:

export async function getServerSideProps(context) {
  
  const categoryController = require('../../../server/controllers/category')
  
  var MockExpressRequest = require('mock-express-request');
  var MockExpressResponse = require('mock-express-response');

  var requestMenu = new MockExpressRequest( {
    params: {
      locale: context.locale,
    }
  })
  var responseMenu = new MockExpressResponse();

  await categoryController.getCategories(requestMenu, responseMenu);

  const result = responseMenu

...rest of getServerSideProps...
}

我是编程新手,虽然这个解决方案有效,但我觉得使用库来测试生产代码可能是个坏主意。 你怎么看?

您可以使用 AXIOS 代替: https://www.npmjs.com/package/axios

您可以在此处找到所有 AXIOS 文档: https://axios-http.com/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM