Llamada a API
En Launchfa.st, para facilitar las cosas a los desarrolladores, todas las APIs están ahora mismo dentro del directorio
src/pages/api.En Launchfa.st, para facilitar las cosas a los desarrolladores, todas las APIs están ahora mismo dentro del directorio
src/routes/api.Cualquier archivo dentro de src/pages que termine en .js/.ts puede ser un endpoint de API.
Lo bueno de las APIs con Launchfa.st es que puedes usar las Web APIs sobre Astro. Esto asegura que el código se pueda reutilizar en cualquier número de proyectos, sin importar su stack.
Encuentra más sobre las rutas de API en Astro en https://docs.astro.build/en/core-concepts/endpoints.
Cualquier archivo dentro de src/routes que termine en +server.ts puede ser un endpoint de API.
Encuentra más sobre las rutas de API en SvelteKit en https://kit.svelte.dev/docs/routing#server.
Rutas de API protegidas
Para ilustrarlo, para crear una ruta de API que devuelva si un usuario ha iniciado sesión o no, sigue los pasos en la plantilla de LaunchFa.st:
- Crea un archivo:
src/pages/api/test.js. - Añade el contenido de abajo a
test.js:
// Handle GET Request to /api/testexport 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/testexport 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, })}- Crea un archivo:
src/route/api/test/+server.ts. - Añade el contenido de abajo a
+server.ts:
import { json, error } from '@sveltejs/kit'import type { RequestEvent } from './$types'import { getSession } from '@/lib/utils/auth'
// Handle GET Request to /api/testexport 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/testexport 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') }}