Express 어댑터
비공식 베타 번역
이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →
예시 애플리케이션
| Description | Links |
|---|---|
| Express server & procedure calls with Node.js. |
기존 Express 프로젝트에 tRPC 추가하기
1. 의존성 설치
bashyarn add @trpc/server zod
bashyarn add @trpc/server zod
Zod는 필수 의존성이 아니지만, 아래 샘플 라우터에서 사용됩니다.
AI 에이전트
AI 코딩 에이전트를 사용하는 경우 더 나은 코드 생성을 위해 tRPC 스킬을 설치하세요:
bashnpx @tanstack/intent@latest install
bashnpx @tanstack/intent@latest install
2. tRPC 라우터 생성
tRPC 라우터를 구현하세요. 아래는 샘플 라우터입니다:
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 ;
라우터 파일이 너무 커지기 시작하면, 라우터를 여러 서브 라우터로 분할하고 각각을 별도의 파일로 구현하세요. 그런 다음 이들을 병합하여 단일 루트 appRouter로 만드세요.
3. Express 어댑터 사용하기
tRPC는 Express용 어댑터를 기본 제공합니다. 이 어댑터를 사용하면 tRPC 라우터를 Express 미들웨어로 변환할 수 있습니다.
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);
이제 엔드포인트를 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} |