Bird
Raised Fist0
Svelteframework~5 mins

Why API routes serve data endpoints in Svelte

Choose your learning style10 modes available
Introduction

API routes let your app send or get data without showing a new page. They act like helpers that give data when asked.

When you want to get user info without reloading the page.
When your app needs to save form data to a database.
When you want to fetch a list of items to show in a list.
When you need to update part of the page based on user actions.
When you want to keep your data logic separate from your page layout.
Syntax
Svelte
export async function GET(event) {
  // handle GET request
  return new Response(JSON.stringify({ message: 'Hello' }), {
    headers: { 'Content-Type': 'application/json' }
  });
}

export async function POST(event) {
  // handle POST request
  const data = await event.request.json();
  return new Response(JSON.stringify({ received: data }), {
    headers: { 'Content-Type': 'application/json' }
  });
}
API routes use special functions like GET or POST to handle different request types.
They return a Response object with data and headers to tell the browser what kind of data it is.
Examples
This example sends a simple JSON greeting when the GET request is made.
Svelte
export async function GET() {
  return new Response(JSON.stringify({ greeting: 'Hi there!' }), {
    headers: { 'Content-Type': 'application/json' }
  });
}
This example reads JSON data sent by the client and sends it back in the response.
Svelte
export async function POST(event) {
  const data = await event.request.json();
  return new Response(JSON.stringify({ youSent: data }), {
    headers: { 'Content-Type': 'application/json' }
  });
}
Sample Program

This API route sends a list of users as JSON when a GET request is made. It helps the frontend get user data without loading a new page.

Svelte
export async function GET() {
  const users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' }
  ];
  return new Response(JSON.stringify(users), {
    headers: { 'Content-Type': 'application/json' }
  });
}
OutputSuccess
Important Notes

API routes are like mini servers inside your app that only send data.

Always set the 'Content-Type' header to 'application/json' when sending JSON data.

You can handle different HTTP methods (GET, POST, etc.) by exporting functions with those names.

Summary

API routes serve data so your app can update parts without full page reloads.

They use functions named after HTTP methods to respond to requests.

They return JSON data with proper headers for easy use in your frontend.

Practice

(1/5)
1. Why do API routes in SvelteKit serve data endpoints instead of full HTML pages?
easy
A. To replace the need for any frontend code
B. To handle user authentication only
C. To serve static files like images and stylesheets
D. To provide data that frontend components can use without reloading the whole page

Solution

  1. Step 1: Understand the purpose of API routes

    API routes are designed to send data, not full pages, so frontend can update parts dynamically.
  2. Step 2: Compare with full page reloads

    Serving data endpoints avoids reloading the entire page, improving user experience and speed.
  3. Final Answer:

    To provide data that frontend components can use without reloading the whole page -> Option D
  4. Quick Check:

    API routes serve data, not full pages [OK]
Hint: API routes send data, not full pages, for smooth updates [OK]
Common Mistakes:
  • Thinking API routes serve full HTML pages
  • Confusing API routes with static file servers
  • Assuming API routes only handle authentication
2. Which of the following is the correct way to define a GET handler in a SvelteKit API route?
easy
A. export function get() { return { body: { message: 'Hello' } }; }
B. export async function GET() { return new Response('Hello'); }
C. function GET() { return 'Hello'; }
D. export const get = () => 'Hello';

Solution

  1. Step 1: Recall SvelteKit API route syntax

    Handlers must be exported functions named after HTTP methods in uppercase, e.g., GET.
  2. Step 2: Check return type

    Handlers return a Response object or an object with status and body; returning a string alone is invalid.
  3. Final Answer:

    export async function GET() { return new Response('Hello'); } -> Option B
  4. Quick Check:

    Use uppercase method names and return Response [OK]
Hint: Use uppercase method names and return Response objects [OK]
Common Mistakes:
  • Using lowercase method names like get instead of GET
  • Returning plain strings instead of Response or object
  • Not exporting the handler function
3. Given this SvelteKit API route code, what will be the JSON response body?
export async function GET() {
  return new Response(JSON.stringify({ success: true, count: 5 }), {
    headers: { 'Content-Type': 'application/json' }
  });
}
medium
A. Error: Missing return type
B. success: true, count: 5
C. {"success":true,"count":5}
D. [true, 5]

Solution

  1. Step 1: Analyze the returned Response

    The handler returns a Response with JSON stringified object and proper content-type header.
  2. Step 2: Understand JSON.stringify output

    JSON.stringify converts the object { success: true, count: 5 } into a JSON string with keys and values quoted properly.
  3. Final Answer:

    {"success":true,"count":5} -> Option C
  4. Quick Check:

    JSON.stringify outputs JSON string with quotes [OK]
Hint: JSON.stringify outputs quoted JSON string [OK]
Common Mistakes:
  • Confusing JSON string with plain object notation
  • Ignoring content-type header importance
  • Expecting array instead of object
4. Identify the error in this SvelteKit API route code:
export function GET() {
  return { body: { message: 'Hi' } };
}
medium
A. The function should return a Response object or use 'return json()' helper
B. The return object should use 'json' instead of 'body'
C. The function must be async
D. The function name should be lowercase 'get'

Solution

  1. Step 1: Check return type requirements

    SvelteKit expects API handlers to return a Response object or use the 'json()' helper for JSON responses.
  2. Step 2: Identify incorrect return format

    Returning { body: { message: 'Hi' } } alone is not valid; it must be wrapped properly.
  3. Final Answer:

    The function should return a Response object or use 'return json()' helper -> Option A
  4. Quick Check:

    Return Response or use json() helper [OK]
Hint: Return Response or use json() helper for JSON data [OK]
Common Mistakes:
  • Returning plain objects without wrapping
  • Using lowercase function names
  • Assuming async is always required
5. You want to create an API route in SvelteKit that returns a list of users as JSON. Which approach correctly serves this data endpoint with proper headers and JSON format?
const users = [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }];
hard
A. export async function GET() { return new Response(JSON.stringify(users), { headers: { 'Content-Type': 'application/json' } }); }
B. export function GET() { return users; }
C. export async function get() { return { body: users }; }
D. export async function GET() { return { json: users }; }

Solution

  1. Step 1: Confirm correct function name and async usage

    The handler must be exported as 'GET' in uppercase and can be async for flexibility.
  2. Step 2: Ensure proper JSON response with headers

    Returning a Response with JSON stringified data and 'Content-Type: application/json' header is the correct pattern.
  3. Final Answer:

    export async function GET() { return new Response(JSON.stringify(users), { headers: { 'Content-Type': 'application/json' } }); } -> Option A
  4. Quick Check:

    Use uppercase GET and return Response with JSON and headers [OK]
Hint: Use uppercase GET and return Response with JSON headers [OK]
Common Mistakes:
  • Returning raw arrays without wrapping
  • Using lowercase function names
  • Omitting content-type header
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard