@wp-typia/rest
v0.3.0
Published
Typed WordPress REST helpers powered by Typia validation
Downloads
275
Readme
@wp-typia/rest
Typed WordPress REST helpers for wp-typia.
This package focuses on:
- validated
apiFetchwrappers - typed endpoint helpers
- canonical WordPress REST route URL resolution
- a React/data convenience layer at
@wp-typia/rest/react - optional query/header decoder helpers that can wrap Typia-generated HTTP decoders
It does not include any WordPress PHP bridge logic. Generated PHP route code stays in @wp-typia/create templates.
If you need a backend-neutral consumer instead of WordPress-specific route
resolution, use @wp-typia/api-client.
The root @wp-typia/rest entry stays transport-oriented. If you want query and
mutation hooks on top of those WordPress helpers, use the React-only subpath:
import { useEndpointMutation, useEndpointQuery } from "@wp-typia/rest/react";Typical usage:
import { callEndpoint, createEndpoint } from "@wp-typia/rest";
const endpoint = createEndpoint<MyRequest, MyResponse>({
method: "POST",
path: "/my-namespace/v1/demo",
validateRequest: validators.request,
validateResponse: validators.response,
});
const result = await callEndpoint(endpoint, { title: "Hello" });If you need a canonical REST URL for a route path, use:
import { resolveRestRouteUrl } from "@wp-typia/rest";
const url = resolveRestRouteUrl("/my-namespace/v1/demo");If you want Typia-powered HTTP decoding, compile the decoder in the consumer project and pass it in:
import typia from "typia";
import { createQueryDecoder } from "@wp-typia/rest";
const decodeQuery = createQueryDecoder(
typia.http.createValidateQuery<MyQuery>()
);@wp-typia/rest/react
The ./react subpath adds a small cache client and React hook layer on top of
callEndpoint(...):
createEndpointDataClient()EndpointDataProvideruseEndpointDataClient()useEndpointQuery(endpoint, request, options?)useEndpointMutation(endpoint, options?)
useEndpointQuery(...) is GET-only in this first pass. Mutations and explicit
non-query calls go through useEndpointMutation(...).
import {
useEndpointMutation,
useEndpointQuery,
} from "@wp-typia/rest/react";
const query = useEndpointQuery(stateEndpoint, request, {
staleTime: 30_000,
resolveCallOptions: () => ({
requestOptions: {
headers: {
"X-WP-Nonce": resolveRestNonce(),
},
},
}),
});
const mutation = useEndpointMutation(writeStateEndpoint, {
invalidate: { endpoint: stateEndpoint, request },
resolveCallOptions: () => ({
requestOptions: {
headers: {
"X-WP-Nonce": resolveRestNonce(),
},
},
}),
});The refresh model is explicit:
- query hooks re-evaluate the latest
requestandresolveCallOptions()on each execution - mutation hooks use the latest variables passed to
mutate(...)and the latestresolveCallOptions(variables) - stale nonces or public tokens do not trigger automatic retries; callers should
refresh auth state and then call
refetch()ormutate()again
For persistence scaffolds generated by @wp-typia/create, src/api.ts remains
the WordPress call helper layer and src/data.ts adds block-specific wrappers
around @wp-typia/rest/react.
