From 2aa57fed30d0f14cff3cfde5b992c63c16860325 Mon Sep 17 00:00:00 2001 From: JohnDoe6345789 Date: Fri, 26 Dec 2025 00:19:20 +0000 Subject: [PATCH] code: request,nextjs,json (1 files) --- frontends/nextjs/src/lib/api/request-json.ts | 28 ++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 frontends/nextjs/src/lib/api/request-json.ts diff --git a/frontends/nextjs/src/lib/api/request-json.ts b/frontends/nextjs/src/lib/api/request-json.ts new file mode 100644 index 000000000..3eadc0f87 --- /dev/null +++ b/frontends/nextjs/src/lib/api/request-json.ts @@ -0,0 +1,28 @@ +export type ApiError = { + error?: string + details?: string +} + +export async function requestJson(url: string, init?: RequestInit): Promise { + const response = await fetch(url, { + headers: { + 'Content-Type': 'application/json', + ...(init?.headers ?? {}), + }, + ...init, + }) + + if (!response.ok) { + let payload: ApiError | null = null + try { + payload = (await response.json()) as ApiError + } catch { + payload = null + } + + const message = payload?.error || `Request failed (${response.status})` + throw new Error(message) + } + + return (await response.json()) as T +}