export default defineEventHandler(async (event) => { const id = getRouterParam(event, 'id'); if (!id) throw createError({ statusCode: 400, statusMessage: 'ID parameter is required', }); const url = new URL(`${useRuntimeConfig().public.directus.url}/assets/${id}`); const query = getQuery(event); Object.entries(query).forEach(([key, value]) => { url.searchParams.set(key, String(value)); }); const token = useRuntimeConfig().public.directus.token || ''; const res = await fetch(url.toString(), { headers: { Authorization: `Bearer ${token}`, }, }); if (!res.ok) { throw createError({ statusCode: res.status, statusMessage: `Failed to fetch asset: ${res.statusText}`, }); } const contentType = res.headers.get('Content-Type') || 'application/octet-stream'; setHeader(event, 'Content-Type', contentType); setHeader(event, 'Cache-Control', 'public, max-age=86400, immutable'); return res.body; });