Lewati ke konten

API Routes

API route memungkinkan Anda membangun endpoint JSON berdampingan dengan halaman Anda.

Buat file +server.ts dan ekspor fungsi kata kerja HTTP yang diberi nama:

src/routes/api/hello/+server.ts
import type { RequestEvent } from "bosia";
export function GET({ params, locals }: RequestEvent) {
return Response.json({
message: "Hello from Bosia API!",
user: locals.user,
});
}
export async function POST({ request }: RequestEvent) {
const body = await request.json().catch(() => ({}));
return Response.json({ received: body });
}

Ekspor yang didukung: GET, POST, PUT, PATCH, DELETE, OPTIONS.

Setiap handler menerima sebuah RequestEvent:

PropertiTipeDeskripsi
requestRequestObjek Web API Request mentah
urlURLURL request yang telah diurai
paramsRecord<string, string>Parameter route dinamis
localsRecord<string, any>Data yang disetel oleh middleware hooks
cookiesCookiesMembaca/menulis cookies

Kembalikan objek Response Web API standar:

// JSON
return Response.json({ ok: true });
// Custom status
return Response.json({ error: "Not found" }, { status: 404 });
// Plain text
return new Response("Hello", { status: 200 });
// Custom headers
return new Response(null, {
status: 204,
headers: { "X-Custom": "value" },
});

Gunakan segmen dinamis seperti pada halaman:

src/routes/api/users/[id]/+server.ts → /api/users/123
export function GET({ params }: RequestEvent) {
return Response.json({ userId: params.id });
}
export function DELETE({ params }: RequestEvent) {
return Response.json({ deleted: params.id });
}

Jika sebuah request mengenai +server.ts yang tidak mengekspor method yang diminta, Bosia merespons dengan 405 Method Not Allowed dan header Allow yang mencantumkan method yang didukung.

Data yang disetel di hooks.server.ts tersedia di setiap handler API:

export function GET({ locals }: RequestEvent) {
if (!locals.user) {
return Response.json({ error: "Unauthorized" }, { status: 401 });
}
return Response.json({ user: locals.user });
}