Defining an API
Core types
Route primitives exported from the core package.
Types
These types are exported from accorudo/core:
type Route<Method, Fragment, Query, Body, Response> // JSON (default)
type MultipartRoute<Method, Fragment, Query, Body, Response> // file uploads
type RouteFragment<Path, PathParams> // e.g. "/user/:id", { id: string }
type CombineRouteFragments<Left, Right> // compose nested paths
type PaginationOptions // { limit?, offset? }
RouteFragment
A reusable path segment with typed :params:
import type { RouteFragment } from "accorudo/core"
export type IdentifyWidgetRouteFragment = RouteFragment<"/widget/:id", { id: string }>;
// path: "/widget/:id", pathParams: { id: string }
CombineRouteFragments
Compose nested path segments. Path params from both fragments are merged:
import type { CombineRouteFragments } from "accorudo/core"
export type WidgetTagsRouteFragment = CombineRouteFragments<
IdentifyWidgetRouteFragment,
RouteFragment<"/tags">
>;
// path: "/widget/:id/tags", pathParams: { id: string }
Route
The default route type for JSON request/response bodies. The fifth generic is the expected response shape.
import type { Route } from "accorudo/core"
export type GetWidgetRoute = Route<
"get", // method
IdentifyWidgetRouteFragment, // path fragment
{}, // query parameters
{}, // body parameters
Success<WidgetEntity> // response
>;
MultipartRoute
Same shape as Route, but typed for multipart/form-data uploads. See Multipart routes.