---
title: "API-Aufruf"
description: "Wie erstellt man APIs mit LaunchFa.st?"
source: "https://www.launchfa.st/de/documentation/tutorials/api-call"
---

> **Site index for agents**
> Fetch https://www.launchfa.st/llms.txt to discover every page on this site.
> Every page is also available as Markdown by appending `.md` to its URL.

import { Tabs, TabItem } from '@astrojs/starlight/components'

<Tabs>

<TabItem label="Astro">In Launchfa.st liegen, um es den Entwicklern leichter zu machen, alle APIs derzeit im Verzeichnis `src/pages/api`.</TabItem>

<TabItem label="SvelteKit">In Launchfa.st liegen, um es den Entwicklern leichter zu machen, alle APIs derzeit im Verzeichnis `src/routes/api`.</TabItem>

</Tabs>

<Tabs>

<div style="height: 1px; background: #C1C1C150; width: 100%;" />

<TabItem label="Astro">
Jede Datei innerhalb von `src/pages`, die auf `.js`/`.ts` endet, kann ein API-Endpunkt sein.

Das Gute an APIs mit Launchfa.st ist, dass Sie die Web-APIs zusätzlich zu Astro nutzen können. So kann der Code in beliebig vielen Projekten wiederverwendet werden, unabhängig von deren Stack.

Mehr zu API-Routen in Astro finden Sie unter https://docs.astro.build/en/core-concepts/endpoints.

</TabItem>

<TabItem label="SvelteKit">
Jede Datei innerhalb von `src/routes`, die auf `+server.ts` endet, kann ein API-Endpunkt sein.

Mehr zu API-Routen in SvelteKit finden Sie unter https://kit.svelte.dev/docs/routing#server.

</TabItem>

</Tabs>

<div style="height: 1px; background: #C1C1C150; width: 100%;" />

## Geschützte API-Routen

Um zu veranschaulichen, wie man eine API-Route erstellt, die zurückgibt, ob ein Nutzer angemeldet ist oder nicht, folgen Sie den Schritten in der LaunchFa.st-Vorlage:

<Tabs>

<TabItem label="Astro">

1. Erstellen Sie eine Datei: `src/pages/api/test.js`.
2. Fügen Sie den folgenden Inhalt in die `test.js` ein:

```typescript
// Filename: src/pages/api/test.js

// Handle GET Request to /api/test
export async function GET({ request }) {
  // Get the user session from the 'request'
  const session = getSession(request)
  if (!session) {
    return new Response('unauthenticated', {
      status: 403,
    })
  }
  return new Response('authenticated', {
    status: 200,
  })
}

// Handle POST Request to /api/test
export async function POST({ request }) {
  // Parse the incoming form data from the 'request'
  const context = await request.formData()
  // Get the user session from the 'request'
  const session = getSession(request)
  if (!session) {
    return new Response('unauthenticated', {
      status: 403,
    })
  }
  return new Response('authenticated', {
    status: 200,
  })
}
```

</TabItem>

<TabItem label="SvelteKit">

1. Erstellen Sie eine Datei: `src/route/api/test/+server.ts`.
2. Fügen Sie den folgenden Inhalt in die `+server.ts` ein:

```typescript
import { json, error } from '@sveltejs/kit'
import type { RequestEvent } from './$types'
import { getSession } from '@/lib/utils/auth'

// Handle GET Request to /api/test
export async function GET(event: RequestEvent) {
  // Get the user session from the 'request'
  const user = getSession(event.request)
  if (!user) {
    throw error(403)
  }
  // Extract the 'file' parameter from the request URL and do something
  const url = new URL(event.request.url)
  const file = url.searchParams.get('file')
}

// Handle POST Request to /api/test
export async function POST(event: RequestEvent) {
  // Get the user session from the 'request'
  const user = getSession(event.request)
  if (!user) {
    throw error(403)
  }
  if (user.email) {
    const data = await event.request.formData()
    // Get the 'file' field from the form data
    const file = data.get('file')
  }
}
```

</TabItem>

</Tabs>

<div style="height: 1px; background: #C1C1C150; width: 100%;" />
