@express-ts-rpc/client
v0.1.0
Published
Type-safe Express router with Hono-style type inference
Maintainers
Readme
Typed Router Client
This package provides a type-safe client for consuming routes defined by the TypedRouter. It uses Axios under the hood to perform HTTP requests, automatically mapping route definitions from the server to a friendly, typed client API.
Installation
npm install express-ts-rpc-clientUsage
- Define your routes with the TypedRouter on the server (see the express-ts-rpc package).
- Import createAPIClient from this package.
- Pass in an Axios instance, and you can begin calling your routes as typed functions.
Example:
import axios from 'axios';
import { type UserRouter } from 'location_of_typeof_your_typedRouter'
import createAPIClient from 'express-ts-rpc-client';
const axiosInstance = axios.create({ baseURL: 'http://localhost:3000' })
const apiClient = createAPIClient<RouterType>(axiosInstance);
// If you defined a route like:
new TypedRouter().get('/users/:id', ...)
//
// You can now call:
apiClient.users[':id'].get({ params: { id: '123' } }).then(data => {
console.log(data); // Typed response from server
});Contributing
Contributions are welcome! Please submit a pull request or open an issue on GitHub.
License
MIT
Roadmap
Add native fetch support
- at the moment the client requires axios as it's underling api client. That does not need to be the case and add this api could very need zero deps
- for now I suggest using redaxios if you do not want to bring in fetch
Improve typing and empty params
- as of now, listing never in the router type does not play well with the generated client.
Add compatiablity for honoClient.
- hono has already solved most of the problems this client aims to solve. We would use the hono client but at the moment their requsted router type is not compatible with the type outputed by the typed router. Hono's types are complex but it should be possible to transform the router type into something that the honoclient will understand
