Express-adaptern
Inofficiell Beta-översättning
Denna sida har översatts av PageTurner AI (beta). Inte officiellt godkänd av projektet. Hittade du ett fel? Rapportera problem →
Exempelapp
| Description | Links |
|---|---|
| Express server & procedure calls with Node.js. |
Så här lägger du till tRPC i ett befintligt Express-projekt
1. Installera beroenden
bashyarn add @trpc/server zod
bashyarn add @trpc/server zod
Zod är inte ett obligatoriskt beroende, men det används i exempelroutern nedan.
AI-agenter
Om du använder en AI-kodningsagent, installera tRPC-färdigheter för bättre kodgenerering:
bashnpx @tanstack/intent@latest install
bashnpx @tanstack/intent@latest install
2. Skapa en tRPC-router
Implementera din tRPC-router. En exempelrouter visas nedan:
server.tstsimport {initTRPC } from '@trpc/server';import {z } from 'zod';export constt =initTRPC .create ();export constappRouter =t .router ({getUser :t .procedure .input (z .string ()).query ((opts ) => {opts .input ; // stringreturn {id :opts .input ,name : 'Bilbo' };}),createUser :t .procedure .input (z .object ({name :z .string ().min (5) })).mutation (async (opts ) => {// use your ORM of choicereturn {id : '1', ...opts .input };}),});// export type definition of APIexport typeAppRouter = typeofappRouter ;
server.tstsimport {initTRPC } from '@trpc/server';import {z } from 'zod';export constt =initTRPC .create ();export constappRouter =t .router ({getUser :t .procedure .input (z .string ()).query ((opts ) => {opts .input ; // stringreturn {id :opts .input ,name : 'Bilbo' };}),createUser :t .procedure .input (z .object ({name :z .string ().min (5) })).mutation (async (opts ) => {// use your ORM of choicereturn {id : '1', ...opts .input };}),});// export type definition of APIexport typeAppRouter = typeofappRouter ;
Om din router-fil börjar bli för stor, dela upp den i flera subrouters där varje implementeras i sin egen fil. Slå sedan ihop dem till en enda rot-appRouter.
3. Använd Express-adaptern
tRPC inkluderar en färdig adapter för Express. Denna adapter låter dig konvertera din tRPC-router till Express-middleware.
server.tstsimport {initTRPC } from '@trpc/server';import * astrpcExpress from '@trpc/server/adapters/express';importexpress from 'express';// created for each requestconstcreateContext = ({req ,res ,}:trpcExpress .CreateExpressContextOptions ) => ({}); // no contexttypeContext =Awaited <ReturnType <typeofcreateContext >>;constt =initTRPC .context <Context >().create ();constappRouter =t .router ({// [...]});constapp =express ();app .use ('/trpc',trpcExpress .createExpressMiddleware ({router :appRouter ,createContext ,}),);app .listen (4000);
server.tstsimport {initTRPC } from '@trpc/server';import * astrpcExpress from '@trpc/server/adapters/express';importexpress from 'express';// created for each requestconstcreateContext = ({req ,res ,}:trpcExpress .CreateExpressContextOptions ) => ({}); // no contexttypeContext =Awaited <ReturnType <typeofcreateContext >>;constt =initTRPC .context <Context >().create ();constappRouter =t .router ({// [...]});constapp =express ();app .use ('/trpc',trpcExpress .createExpressMiddleware ({router :appRouter ,createContext ,}),);app .listen (4000);
Dina endpoints är nu tillgängliga via HTTP!
| Endpoint | HTTP URI |
|---|---|
getUser | GET http://localhost:4000/trpc/getUser?input=INPUT where INPUT is a URI-encoded JSON string. |
createUser | POST http://localhost:4000/trpc/createUser with req.body of type {name: string} |