Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在nextjs中生成静态API路由_Javascript_Next.js - Fatal编程技术网

Javascript 在nextjs中生成静态API路由

Javascript 在nextjs中生成静态API路由,javascript,next.js,Javascript,Next.js,我想通过API公开文件中的数据(JSON)。我知道构建时的数据,但我不知道如何创建静态API路由,甚至不知道如何静态地通过API路由公开文件 我在谷歌上搜索了两种解决方案: 创建一个返回JSON文件的静态页面(找不到解决方案,它总是返回HTML) 使用pages/api/[something]生成api(但它似乎总是动态的) 我最后的办法是尝试通过/pages/api/[something].js上的函数访问该文件,但这是动态的,而不是静态的 默认情况下位于/pages/api/hello.

我想通过API公开文件中的数据(JSON)。我知道构建时的数据,但我不知道如何创建静态API路由,甚至不知道如何静态地通过API路由公开文件

我在谷歌上搜索了两种解决方案:

  • 创建一个返回JSON文件的静态页面(找不到解决方案,它总是返回HTML)
  • 使用pages/api/[something]生成api(但它似乎总是动态的)
我最后的办法是尝试通过/pages/api/[something].js上的函数访问该文件,但这是动态的,而不是静态的

默认情况下位于/pages/api/hello.js文件夹中的动态函数:

导出默认值(请求、恢复)=>{
res.statusCode=200;
res.json({name:“johndoe”});
};

这里的典型策略是什么?我觉得我遗漏了一些东西。

FWIW,这是我发现的动态生成API的动态方式:

//在文件/pages/api/[article].js上
从“../../lib/api”导入{getArticle};
导出默认值(请求、恢复)=>{
//它从文件中获取文章,也可以与getStaticProps一起使用
const article=getPost({article:req.article});
res.statusCode=200;
//返回JSON。
res.json(第条);
}

我仍然希望它是静态的,不需要运行任何无服务器函数。

FWIW,这是我发现的动态生成API的动态方式:

//在文件/pages/api/[article].js上
从“../../lib/api”导入{getArticle};
导出默认值(请求、恢复)=>{
//它从文件中获取文章,也可以与getStaticProps一起使用
const article=getPost({article:req.article});
res.statusCode=200;
//返回JSON。
res.json(第条);
}

我仍然希望它是静态的,不需要运行任何无服务器的函数。

使用页面/api/[something]来生成api(但它似乎总是动态的)。

不,它不是动态的。从
[something].js
中,如果导出getStaticPath(这将为您生成静态路由)和getStaticProps(这将注入从相应路由提供的数据),
下一次构建将生成静态文件,并准备用作包含原始json数据的api页面


希望这就是您试图解决的问题。

使用页面/api/[something]生成api(但它似乎总是动态的)。

不,它不是动态的。从
[something].js
中,如果导出getStaticPath(这将为您生成静态路由)和getStaticProps(这将注入从相应路由提供的数据),
下一次构建将生成静态文件,并准备用作包含原始json数据的api页面


希望这就是您试图解决的问题。

您是否尝试将
data.json
放在
public/api
文件夹中?从技术上讲,它不是
api
,但它应该提供
/api/data.json
路由上的静态文件。我可以直接访问标记文件,但这些文件不进行灰质处理。我可能太挑剔了。啊,我记得这个选项的问题:我需要在文件中检查标题以生成slug。您是否尝试过将
data.json
放在
public/api
文件夹中?从技术上讲,它不是
api
,但它应该提供
/api/data.json
路由上的静态文件。我可以直接访问标记文件,但这些文件不进行灰质处理。我可能太挑剔了。啊,我记得这个选项的问题:我需要检查文件内部的标题来生成slug。