3. 데이터 로딩 및 API 엔드포인트
SvelteKit은 load 함수를 사용하여 서버 및 클라이언트에서 데이터를 가져올 수 있는 강력한 데이터 로딩 메커니즘을 제공합니다.
3.1. load 함수로 데이터 가져오기 (+page.js / +page.server.js)
+page.js 파일의 load 함수는 서버와 클라이언트 모두에서 실행될 수 있으며, +page.server.js 파일의 load 함수는 오직 서버에서만 실행됩니다.
// src/routes/posts/[slug]/+page.server.js
export async function load({ params }) {
const res = await fetch(\`https://api.example.com/posts/\${params.slug}\`);
const post = await res.json();
return { post };
}
+page.svelte에서 로드된 데이터를 프롭스로 직접 접근할 수 있습니다.
// src/routes/posts/[slug]/+page.svelte
<script>
export let data; // \`data\` prop은 load 함수에서 반환된 값을 포함합니다.
</script>
<h1>{data.post.title}</h1>
<p>{data.post.content}</p>
3.2. API 엔드포인트 (+server.js)
+server.js 파일을 사용하여 백엔드 API 엔드포인트를 생성할 수 있습니다. 각 HTTP 메소드 (GET, POST, PUT, DELETE)에 대한 함수를 내보냅니다.
// src/routes/api/items/+server.js
import { json } from '@sveltejs/kit';
export async function GET() {
const items = [{ id: 1, name: 'Item A' }, { id: 2, name: 'Item B' }];
return json(items);
}
export async function POST({ request }) {
const newItem = await request.json();
// 데이터베이스에 저장 로직...
return json({ message: 'Item added!', item: newItem }, { status: 201 });
}