$fetch<TSchema extends StandardSchemaV1>(): Promise<StandardSchemaV1.Result<StandardSchemaV1.InferOutput<TSchema>>>
Type-safe fetch wrapper with Standard Schema validation.
- When
throwOnValidationError: true: validated data of typeTSchema - When
throwOnValidationError: false: Standard Schema Result object{ value?, issues? } - When
throwOnFetchError: true: throwsFetchErroron non-ok responses
If no schema is provided, returns the raw Response object.
import { z } from "zod";
import { $fetch } from "@zap-studio/fetch";
import { z } from "zod"; import { $fetch } from "@zap-studio/fetch";
const UserSchema = z.object({ id: z.number(), name: z.string() });
// Basic usage (schema validation) const user = await $fetch("/api/users/1", UserSchema, { headers: { "Authorization": "Bearer token" } }); console.log("Validated user:", user);
// Raw usage (no schema validation and typed Response object) const result = await $fetch("/api/data", { method: "POST", body: JSON.stringify({ key: "value" }) }); const json = await result.json() as ResultType; console.log("Raw response data:", json);
// Usage with validation errors returned instead of thrown const result = await $fetch("/api/users/1", UserSchema, { throwOnValidationError: false });
if (result.issues) { console.error("Validation errors:", result.issues); } else { console.log("Validated user:", result.value); }
TSchema extends StandardSchemaV1
$fetch<TSchema extends StandardSchemaV1>(): Promise<StandardSchemaV1.InferOutput<TSchema>>
$fetch(resource: string,options?: ExtendedRequestInit,): Promise<Response>
resource: string
options: ExtendedRequestInit