본문 바로가기
버전: 9.x

Request Context

비공식 베타 번역

이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →

createContext() 함수는 각 요청마다 호출되며, 그 결과는 모든 리졸버(resolver)로 전파됩니다. 이를 통해 컨텍스트 데이터를 리졸버로 전달할 수 있습니다.

예제 코드

server/context.ts
ts
import * as trpc from '@trpc/server';
import * as trpcNext from '@trpc/server/adapters/next';
// The app's context - is generated for each incoming request
export async function createContext(opts?: trpcNext.CreateNextContextOptions) {
// Create your context based on the request object
// Will be available as `ctx` in all your resolvers
// This is just an example of something you'd might want to do in your ctx fn
async function getUserFromHeader() {
if (opts?.req.headers.authorization) {
// const user = await decodeJwtToken(req.headers.authorization.split(' ')[1])
// return user;
}
return null;
}
const user = await getUserFromHeader();
return {
user,
};
}
type Context = trpc.inferAsyncReturnType<typeof createContext>;
// Helper function to create a router with your app's context
export function createRouter() {
return trpc.router<Context>();
}
server/context.ts
ts
import * as trpc from '@trpc/server';
import * as trpcNext from '@trpc/server/adapters/next';
// The app's context - is generated for each incoming request
export async function createContext(opts?: trpcNext.CreateNextContextOptions) {
// Create your context based on the request object
// Will be available as `ctx` in all your resolvers
// This is just an example of something you'd might want to do in your ctx fn
async function getUserFromHeader() {
if (opts?.req.headers.authorization) {
// const user = await decodeJwtToken(req.headers.authorization.split(' ')[1])
// return user;
}
return null;
}
const user = await getUserFromHeader();
return {
user,
};
}
type Context = trpc.inferAsyncReturnType<typeof createContext>;
// Helper function to create a router with your app's context
export function createRouter() {
return trpc.router<Context>();
}