Ts-Rest: TypeScript Contracts for REST APIs with Built-In Zod Validation
ts-rest.com
ts-rest.com
Lately, I’ve been thinking about what would be the simplest way to typecheck a rest api. I wonder if…
- …it would make sense to define endpoints in isolation, rather than one big router object. Large / recursive types have bad performance, especially when mixed with zod. Isolated contract definitions would prevent statically checking for path conflicts though.
- …a composition-based api would be better than a wrapper to minimize the API surface:
const getPostById = endpoint(/* */)
// client
const postResponse = fetch(getRequest(getPostById, 123))
const post = getResponseData(getPostsById, postResponse)