首頁 > web前端 > js教程 > 主體

為什麼我應該避免在 getServerSideProps() 中使用 Fetch 取得內部 API?

DDD
發布: 2024-11-16 18:29:03
原創
424 人瀏覽過

Why Should I Avoid Using Fetch for Internal APIs in getServerSideProps()?

Next.js 中使用getServerSideProps 進行內部API 取得

Next.js 的新手在處理頁面之間的資料取得或頁面之間的資料取得時常會遇到困境成分。例如,當使用 getServerSideProps() 取得傳回使用者資料的內部 API 時,很自然地認為這種方法非常適合 SEO 目的。但是,Next.js 文件建議不要使用 fetch() 在 getServerSideProps() 中呼叫 API 路由。

為什麼要避免在 getServerSideProps() 中取得 API 路由?

在 getServerSideProps() 中使用 fetch() 呼叫內部 API 路由是不必要的,因為 getServerSideProps() 和 API 路由都在伺服器上執行。這個額外的請求效率很低,也沒有帶來任何額外的好處。

建議做法

不要從 getServerSideProps() 呼叫內部 API,應該直接從API路線。這允許 getServerSideProps() 直接與資料庫、檔案系統或其他資源交互,而無需引入不必要的 API 呼叫。

範例重構

考慮用於取得的API 路由來自外部API 的資料:

// pages/api/user
export default async function handler(req, res) {
  const response = await fetch(/* external API endpoint */);
  const jsonData = await response.json();
  res.status(200).json(jsonData);
}
登入後複製

此邏輯可以擷取到一個單獨的函數中,該函數可在API 路由和getServerSideProps()中使用:

// pages/api/user
export async function getData() {
  const response = await fetch(/* external API endpoint */);
  const jsonData = await response.json();
  return jsonData;
}

export default async function handler(req, res) {
  const jsonData = await getData();
  res.status(200).json(jsonData);
}
登入後複製

這允許getData() 函數可在getServerSideProps() 中重複使用:

// pages/home
import { getData } from './api/user';

export async function getServerSideProps(context) {
  const jsonData = await getData();
  //...
}
登入後複製

透過遵循這些準則,開發人員可以提高其Next.js 應用程式的效能和效率,同時保持SEO 優勢。

以上是為什麼我應該避免在 getServerSideProps() 中使用 Fetch 取得內部 API?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板