본문으로 건너뛰기

기본 사용법

이 예제는 express-cargo의 가장 단순한 엔드투엔드 흐름을 보여줍니다. 요청 클래스를 정의하고, bindingCargo 미들웨어로 바인딩한 뒤, getCargo로 검증된 결과를 읽습니다.

이 페이지는 바인딩 흐름에만 집중합니다. 프로젝트 설정(TypeScript, tsconfig, 의존성 설치)은 시작하기를 참고하세요.

1. 요청 클래스 정의​

클래스를 선언하고 소스 데코레이터(여기서는 @Body())를 사용해 각 필드를 들어오는 요청의 일부에 매핑합니다.

// create-user.request.ts
import { Body } from 'express-cargo'

export class CreateUserRequest {
@Body('name')
name!: string

@Body('email')
email!: string
}

2. 미들웨어 적용​

요청 클래스를 bindingCargo에 전달하고 라우트에 미들웨어로 등록합니다. 미들웨어는 핸들러가 실행되기 전에 요청을 바인딩하고 검증합니다.

import express from 'express'
import { bindingCargo, getCargo } from 'express-cargo'
import { CreateUserRequest } from './create-user.request'

const app = express()
app.use(express.json())

app.post('/users', bindingCargo(CreateUserRequest), (req, res) => {
// 3. 바인딩된 타입 안전 객체 읽기
const user = getCargo<CreateUserRequest>(req)

res.json({
message: 'User created!',
data: user,
})
})

3. 요청 예시​

{
"name": "Jane Doe",
"email": "jane@example.com"
}

4. 결과 예시​

getCargo<CreateUserRequest>(req)는 값이 완전히 채워진 CreateUserRequest 인스턴스를 반환합니다.

{
"message": "User created!",
"data": {
"name": "Jane Doe",
"email": "jane@example.com"
}
}

다음 단계​