diff --git a/src/content/docs/ja/guides/data-fetching.mdx b/src/content/docs/ja/guides/data-fetching.mdx new file mode 100644 index 0000000000000..3189b3f2ab468 --- /dev/null +++ b/src/content/docs/ja/guides/data-fetching.mdx @@ -0,0 +1,109 @@ +--- +title: データの取得 +description: Astroでfetch APIを使ってリモートデータを取得する方法を学びます。 +i18nReady: true +--- +`.astro`ファイルは、ページの生成に使用するためにリモートデータを取得できます。 + +## Astroでの`fetch()` + +すべての[Astroコンポーネント](/ja/basics/astro-components/)は、コンポーネントスクリプト内で[グローバルな`fetch()`関数](https://developer.mozilla.org/ja/docs/Web/API/fetch)にアクセスでき、URL全体(例: `https://example.com/api`)を指定してAPIへのHTTPリクエストを送れます。 +さらに、[`new URL("/api", Astro.url)`](/ja/reference/api-reference/#url)を使えば、サーバー上でオンデマンドにレンダリングされるプロジェクトのページやエンドポイントへのURLを構築できます。 + +このfetch呼び出しはビルド時に実行され、取得したデータは動的なHTMLを生成するためにコンポーネントテンプレートで利用できます。[SSR](/ja/guides/on-demand-rendering/)モードが有効な場合、fetch呼び出しはランタイムに実行されます。 + +💡 Astroコンポーネントスクリプト内では、[**トップレベル`await`**](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/await#top_level_await)を活用しましょう。 + +💡 取得したデータは、propsとしてAstroコンポーネントとフレームワークコンポーネントの両方に渡せます。 + +```astro /await fetch\\(.*?\\);/ +--- +// src/components/User.astro +import Contact from "../components/Contact.jsx"; +import Location from "../components/Location.astro"; + +const response = await fetch("https://randomuser.me/api/"); +const data = await response.json(); +const randomUser = data.results[0]; +--- + +
Year: {film.releaseDate}
+``` + +## ヘッドレスCMSからの取得 + +Astroコンポーネントは、お好みのCMSからデータを取得し、それをページコンテンツとしてレンダリングできます。[動的ルート](/ja/guides/routing/#dynamic-routes)を使えば、CMSのコンテンツをもとにページを生成することも可能です。 + +Storyblok、Contentful、WordPressなどのヘッドレスCMSとAstroを統合する方法の詳細については、[CMSガイド](/ja/guides/cms/)を参照してください。 + +## コミュニティリソース + +- [Astro + GraphQLでフルスタックアプリを作成する](https://robkendal.co.uk/blog/how-to-build-astro-site-with-graphql/)