Type-safe RPC for NestJS
Call Nest methods like local functions. Zero boilerplate. Smart batching.
Call Nest methods like local functions. Zero boilerplate. Smart batching.
import { Module } from '@nestjs/common';
import { Router, Route, defineAppRouter } from '@nestjs-rpc/server';
@Router()
export class UsersRouter {
@Route()
getUser({ id }: { id: string }) {
return { id, name: 'Ada Lovelace' };
}
}
export const appRouter = defineAppRouter({
users: UsersRouter,
});
@Module({ providers: [UsersRouter] })
export class AppModule {}
import { createRpcClient } from '@nestjs-rpc/client';
// Tip: export your router type from a shared package and use it here
type RpcApp = typeof appRouter; // e.g. import type { RpcApp } from '@acme/shared'
const client = createRpcClient<RpcApp>({
baseUrl: 'https://api.example.com',
apiPrefix: 'api',
});
const user = await client.users.getUser({ id: '1' });
console.log(user.name); // "Ada Lovelace"