import { $fetch } from 'ofetch' import { createError, defineEventHandler, getHeader, getQuery } from 'h3' import { useRuntimeConfig } from '#imports' // Frontend-friendly endpoint: // GET /api/cms-navigation?parentId=xxxx // Proxies to CMS modules API. Some deployments expose "/cms-navigation", others "/cms/cms-navigation". export default defineEventHandler(async (event) => { const config = useRuntimeConfig() const query = getQuery(event) const modulesApiBase = config.public.modulesApiBase || config.public.ApiBase || 'https://cms-api.websoft.top/api' const tenantId = getHeader(event, 'tenantid') || config.public.tenantId || config.public.TenantId || '10586' const authorization = getHeader(event, 'authorization') const headers = { TenantId: String(tenantId), ...(authorization ? { Authorization: String(authorization) } : {}) } const upstreamCandidates = ['/cms-navigation', '/cms/cms-navigation'] let lastError: any for (const path of upstreamCandidates) { try { return await $fetch(path, { baseURL: modulesApiBase, headers, query }) } catch (error: any) { lastError = error } } throw createError({ statusCode: lastError?.statusCode || lastError?.response?.status || 502, statusMessage: lastError?.statusMessage || 'Failed to fetch cms navigation' }) })