【问题标题】:NextJS How to create dynamic backend routesNextJS 如何创建动态后端路由
【发布时间】:2021-12-17 14:56:37
【问题描述】:

我可以创建动态后端路由吗?我正在创建和图像主机。我希望用户能够将他们的图像保存在像http://localhost/<random_id> 这样的域下的服务器上,链接的示例是http://localhost/a3Fafght5,我在网上环顾四周,找不到任何关于创建动态后端的信息路线,然后当我确实找到一件事时,它说我需要使用 getStaticPaths 来声明所有可能的 id。我不知道构建项目时 id 会是什么,我需要能够用它查询数据库并检查它是否存在并从那里执行操作。

【问题讨论】:

  • 我需要能够用它查询数据库并检查它是否存在并从那里做事。 - 你知道需要做什么!
  • 我知道在获得 id 后我需要做什么,但我无法动态获取 id。据我了解,我可以在/api/images/<id> 下创建一个类似的端点,但我需要能够在站点的根目录下进行。
  • 您应该使用getStaticPaths 并从数据库等外部来源访问您的所有/大部分 ID。您可以使用revalidate 属性,该属性将根据您指定的间隔持续时间不断更新动态路由。
  • 您可以创建动态 API 路由(来自 pages/api/ 文件夹)并将它们映射到 rewrites 以便可以从网站的根目录访问它们。请注意,这将与同样位于根目录的潜在页面发生冲突。

标签: javascript next.js nextjs-dynamic-routing


【解决方案1】:

如果你有像pages/[imageId].js 这样的文件,你可以使用动态页面路由 然后只需将getServerSideProps 放入您的文件中,该文件可以调用您的数据库并确定这是否是有效的ID。对于有效的 ID,您将返回图像,对于无效的只是 404。

如果您不想使用服务器端渲染,而是使用静态渲染。您可以拥有与上述相同的文件并拥有 getStaticPaths 函数,该函数将查询数据库并返回所有可能 ID 的数组。但是,如果您有很多图像,这可能会成为问题,那么服务器端解决方案将是最简单的。

【讨论】:

  • 但是,如果您有很多图像,这可能会出现问题 - 并非如此,您可以在请求时返回 getStaticPaths 中的前 N ​​个 ID 并设置 fallback: blocking对于尚未生成的页面,Next.js 将在第一个请求时服务器渲染页面。
  • 这是我想要做的,但我将如何使用 getServerSideProps 来查询我的数据库,看看它是否有效?这听起来正是我想要实现的目标,只是看起来我不知道该怎么做。
猜你喜欢
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
  • 2022-12-30
  • 1970-01-01
  • 2020-09-08
  • 2021-08-12
相关资源
最近更新 更多