next api decorators
v2.0.2
문서를 봅니다
// pages/api/user.ts
class User {
// GET /api/user
@ Get ( )
async fetchUser ( @ Query ( 'id' ) id : string ) {
const user = await DB . findUserById ( id ) ;
if ( ! user ) {
throw new NotFoundException ( 'User not found.' ) ;
}
return user ;
}
// POST /api/user
@ Post ( )
@ HttpCode ( 201 )
async createUser ( @ Body ( ValidationPipe ) body : CreateUserDto ) {
return await DB . createUser ( body . email ) ;
}
}
export default createHandler ( User ) ;유효성 검사에 대해 자세히 알아보십시오
export default async ( req : NextApiRequest , res : NextApiResponse ) => {
if ( req . method === 'GET' ) {
const user = await DB . findUserById ( req . query . id ) ;
if ( ! user ) {
return res . status ( 404 ) . json ( {
statusCode : 404 ,
message : 'User not found'
} )
}
return res . json ( user ) ;
} else if ( req . method === 'POST' ) {
// Very primitive e-mail address validation.
if ( ! req . body . email || ( req . body . email && ! req . body . email . includes ( '@' ) ) ) {
return res . status ( 400 ) . json ( {
statusCode : 400 ,
message : 'Invalid e-mail address.'
} )
}
const user = await DB . createUser ( req . body . email ) ;
return res . status ( 201 ) . json ( user ) ;
}
res . status ( 404 ) . json ( {
statusCode : 404 ,
message : 'Not Found'
} ) ;
} 클래스 및 데코레이터를 선언적으로 선언적으로 구축하면 Next.js API 경로를보다 쉽게 처리하고 /pages/api 코드베이스에 주문 및 정신을 가져옵니다.
이 구조는 NestJS에서 크게 영감을 얻었으며 많은 사용 사례를위한 놀라운 프레임 워크입니다. 반면에, 백엔드를위한 별도의 NestJS Repo는 더 작은 백엔드 요구 사항을 가진 프로젝트에 불필요한 오버 헤드와 복잡성을 가져올 수 있습니다. NestJS의 구조를 다음에 사용하기 쉽고 JS를 사용하면 올바른 사용 사례를 위해 두 가지 세계를 모두 제공합니다.
Next.js 또는 Nestjs에 익숙하지 않고 더 많은 정보를 원하거나 설득 해야하는 경우 @tpjnorton의 Next-Api-Decorators와 함께 다음 기사를 확인하십시오.
시작하려면 https://next-api-decorators.vercel.app/docs/#installation을 방문하십시오.
사용 주제에 대해서는 문서를 참조하십시오.
확인
경로 일치
중간 사용
맞춤형 중간 전야
파이프
예외
| 설명 | |
|---|---|
@SetHeader(name: string, value: string) | 클래스에 정의 된 모든 경로로 헤더 이름/값을 설정합니다. |
@UseMiddleware(...middlewares: Middleware[]) | 클래스에 정의 된 모든 경로에 대해 하나 이상의 중간 전과를 등록합니다. |
| 설명 | |
|---|---|
@Get(path?: string) | 메소드를 GET Handler로 표시합니다. |
@Post(path?: string) | 메소드를 POST 핸들러로 표시합니다. |
@Put(path?: string) | 메소드를 PUT 핸들러로 표시합니다. |
@Delete(path?: string) | 메소드를 DELETE 처리기로 표시합니다. |
@Patch(path?: string) | 메소드를 PATCH 핸들러로 표시합니다. |
@SetHeader(name: string, value: string) | 헤더 이름/값을 경로 응답으로 설정합니다. |
@HttpCode(code: number) | 경로 응답에서 HTTP 코드를 설정합니다. |
@UseMiddleware(...middlewares: Middleware[]) | 핸들러에 대해 하나 또는 여러 개의 중간 전과를 등록합니다. |
| 설명 | |
|---|---|
@Req() | 요청 객체를 가져옵니다. |
@Res() * | 응답 객체를 가져옵니다. |
@Body() | 요청 본문을 얻습니다. |
@Query(key: string) | 키에 의해 쿼리 문자열 매개 변수 값을 가져옵니다. |
@Header(name: string) | 이름으로 헤더 값을 얻습니다. |
@Param(key: string) | 키별로 경로 매개 변수 값을 가져옵니다. |
* 메소드 핸들러에 @Res() 주입하면 응답 관리에 대한 책임이 있습니다. 그렇게 할 때는 응답 객체 (예 : res.json(...) 또는 res.send(...) )을 호출하여 어떤 종류의 응답을 발행해야합니다.