diff --git a/src/content/docs/ja/core-concepts/endpoints.mdx b/src/content/docs/ja/core-concepts/endpoints.mdx
index 64fc777c64c2b..fab928823fe14 100644
--- a/src/content/docs/ja/core-concepts/endpoints.mdx
+++ b/src/content/docs/ja/core-concepts/endpoints.mdx
@@ -1,42 +1,40 @@
---
title: エンドポイント
-description: あらゆる種類のデータを提供するエンドポイントの作成方法について説明します。
+description: どんな種類のデータでも提供できるエンドポイントの作成方法について学びます。
i18nReady: true
---
-Astroでは、あらゆる種類のデータを提供するためのカスタムエンドポイントを作成できます。これを利用して、画像を生成したり、RSSを公開したり、またはAPIルーティングとして使用してサイトの完全なAPIを構築できます。
+import RecipeLinks from "~/components/RecipeLinks.astro";
-静的に生成されたサイトでは、カスタムエンドポイントは静的ファイルを生成するため、ビルド時に呼び出されます。[SSR](/ja/guides/server-side-rendering/)モードを選択した場合、カスタムエンドポイントはリクエストに応じて呼び出されるライブサーバーエンドポイントに変わります。静的エンドポイントとSSRエンドポイントは同じ様に定義されますが、SSRエンドポイントは追加機能をサポートします。
+Astroでは、どんな種類のデータでも提供できるカスタムエンドポイントを作成できます。これを利用して、画像を生成したり、RSSを公開したり、またはAPIルーティングとして使用してサイトの完全なAPIを構築したりできます。
+
+静的に生成されたサイトでは、カスタムエンドポイントは静的ファイルを生成するため、ビルド時に呼び出されます。[SSR](/ja/guides/server-side-rendering/)モードを選択した場合、カスタムエンドポイントはリクエストに応じて呼び出される動的なサーバーエンドポイントに変わります。静的エンドポイントとSSRエンドポイントは同じ様に定義されますが、SSRエンドポイントは追加機能をサポートします。
## 静的ファイルのエンドポイント
-カスタムエンドポイントを作成するには、`.js`または`.ts`ファイルを`/pages`ディレクトリに追加してください。`.js`または`.ts`の拡張子はビルドプロセス中に削除されるので、ファイル名には作成したいデータの拡張子を含める必要があります。たとえば、`src/pages/data.json.ts`は、`/data.json`エンドポイントを構築します。
+カスタムエンドポイントを作成するには、`.js`または`.ts`ファイルを`/pages`ディレクトリに追加してください。`.js`または`.ts`の拡張子はビルドプロセス中に削除されるので、ファイル名には作成したいデータの拡張子を含める必要があります。たとえば、`src/pages/data.json.ts`は、ビルドすると`/data.json`エンドポイントとなります。
-エンドポイントは、`Astro`グローバルと同様のプロパティを持つ[コンテキストオブジェクト](/ja/reference/api-reference/#endpoint-context)を受け取る`get`関数(オプションで`async`)をエクスポートします。これは`body`を持つオブジェクトを返し、Astroはビルド時にこれを呼び出し、bodyの内容を使ってファイルを生成します。
+エンドポイントは、`Astro`グローバルと同様のプロパティを持つ[コンテキストオブジェクト](/ja/reference/api-reference/#endpoint-context)を受け取る`GET`関数(`async`も可)をエクスポートします。以下のエンドポイントは`name`と`url`を持つレスポンスオブジェクトを返しており、Astroはビルド時にこれを呼び出し、bodyの内容を使ってファイルを生成します。
```ts
// 例: src/pages/builtwith.json.ts
// 出力: /builtwith.json
-export async function get({params, request}) {
- return {
- body: JSON.stringify({
+export async function GET({params, request}) {
+ return new Response(
+ JSON.stringify({
name: 'Astro',
- url: 'https://astro.build/',
- }),
- };
+ url: 'https://astro.build/'
+ })
+ )
}
```
-戻り値のオブジェクトは、`encoding`プロパティを持つことができます。これは、Node.jsの`fs.writeFile`メソッドで受け入れられる有効な[`BufferEncoding`](https://github.com/DefinitelyTyped/DefinitelyTyped/blob/bdd02508ddb5eebcf701fdb8ffd6e84eabf47885/types/node/buffer.d.ts#L169)であれば何でもかまいません。たとえば、バイナリのpngイメージを生成する場合は次のようになります。
+Astro v3.0以降、返り値の`Response`オブジェクトが`encoding`プロパティを含む必要はなくなりました。たとえば、バイナリのpng画像を生成する場合は次のようになります。
-```ts title="src/pages/astro-logo.png.ts" {6}
-export async function get({ params, request }) {
- const response = await fetch("https://astro.build/assets/press/full-logo-light.png");
- const buffer = Buffer.from(await response.arrayBuffer());
- return {
- body: buffer,
- encoding: 'binary',
- };
+```ts title="src/pages/astro-logo.png.ts" {3}
+export async function GET({ params, request }) {
+ const response = await fetch("https://docs.astro.build/assets/full-logo-light.png");
+ return new Response(await response.arrayBuffer());
}
```
@@ -45,39 +43,39 @@ export async function get({ params, request }) {
```ts
import type { APIRoute } from 'astro';
-export const get: APIRoute = async function get ({params, request}) {
-...
+export const GET: APIRoute = async ({ params, request }) => {...}
```
### `params`と動的ルーティング
-エンドポイントは、ページと同じ[動的ルーティング](/ja/core-concepts/routing/#%E5%8B%95%E7%9A%84%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)機能をサポートしています。ファイル名を括弧付きのパラメーター名とし、[`getStaticPaths()`関数](/ja/reference/api-reference/#getstaticpaths)をエクスポートしてください。そして、エンドポイント関数に渡された`params`プロパティを使用して、パラメーターにアクセスします。
+エンドポイントは、ページと同じ[動的ルーティング](/ja/core-concepts/routing/#%E5%8B%95%E7%9A%84%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0)機能をサポートしています。ファイル名を角括弧付きのパラメーター名とし、[`getStaticPaths()`関数](/ja/reference/api-reference/#getstaticpaths)をエクスポートしてください。そして、エンドポイント関数に渡された`params`プロパティを使用して、パラメーターにアクセスします。
-```ts title="src/pages/[id].json.ts"
+```ts title="src/pages/api/[id].json.ts"
import type { APIRoute } from 'astro';
-const usernames = ["Sarah", "Chris", "Dan"]
+const usernames = ["Sarah", "Chris", "Yan", "Elian"]
-export const get: APIRoute = ({ params, request }) => {
+export const GET: APIRoute = ({ params, request }) => {
const id = params.id;
- return {
- body: JSON.stringify({
+ return new Response(
+ JSON.stringify({
name: usernames[id]
})
- }
-};
+ )
+}
-export function getStaticPaths () {
+export function getStaticPaths() {
return [
{ params: { id: "0"} },
{ params: { id: "1"} },
{ params: { id: "2"} },
+ { params: { id: "3"} }
]
}
```
-これにより、ビルド時に`/api/1.json`、`/api/2.json`、`/api/3.json`という3つのJSONエンドポイントが生成されます。エンドポイントによる動的ルーティングはページと同じように動作しますが、エンドポイントはコンポーネントではなく関数であるため、[props](/ja/reference/api-reference/#data-passing-with-props)はサポートされていません。
+これにより、ビルド時に`/api/0.json`、`/api/1.json`、`/api/2.json`、`/api/3.json`という4つのJSONエンドポイントが生成されます。エンドポイントによる動的ルーティングはページと同じように動作しますが、エンドポイントはコンポーネントではなく関数であるため、[props](/ja/reference/api-reference/#data-passing-with-props)はサポートされていません。
### `request`
@@ -86,33 +84,34 @@ export function getStaticPaths () {
```ts title="src/pages/request-path.json.ts"
import type { APIRoute } from 'astro';
-export const get: APIRoute = ({ params, request }) => {
- return {
- body: JSON.stringify({
+export const GET: APIRoute = ({ params, request }) => {
+ return new Response(JSON.stringify({
path: new URL(request.url).pathname
})
- };
+ )
}
```
## サーバーエンドポイント(APIルーティング)
-静的ファイルエンドポイントのセクションで説明したものはすべて、SSRモードでも使用できます。ファイルは、`Astro`グローバルと同様のプロパティを持つ[コンテキストオブジェクト](/ja/reference/api-reference/#endpoint-context)を受け取る`get`関数をエクスポートできます。
+静的ファイルエンドポイントのセクションで説明したものはすべて、SSRモードでも使用できます。ファイルは、`Astro`グローバルと同様のプロパティを持つ[コンテキストオブジェクト](/ja/reference/api-reference/#endpoint-context)を受け取る`GET`関数をエクスポートできます。
-しかし、`static`モードとは異なり、`server`モードを設定すると、エンドポイントはリクエストされた時点で構築されます。これにより、ビルド時には利用できない新しい機能がアンロックされ、リクエストをリッスンするAPIルートを構築したり、実行時にサーバー上で安全にコードを実行できるようになります。
+しかし、`static`モードとは異なり、`server`モードを設定すると、エンドポイントはリクエストされた時点でビルドされます。これにより、ビルド時には利用できない新しい機能が利用可能となり、リクエストをリッスンするAPIルートを構築したり、実行時にサーバー上で安全にコードを実行できるようになります。
+
+