Show GN: express-cargo class 기반 request parsing
(github.com/Beyond-Imagination)express-cargo 는 TypeScript 기반의 데코레이터 방식으로 반복적인 요청 데이터 처리를 깔끔하게 정리해주는 미들웨어입니다. req.body, req.query, req.params를 직접 다루지 않고 클래스 선언과 미들웨어 호출로 필요한 작업을 할수 있습니다.
설치 방법
npm install express-cargo reflect-metadata
주요 특징
- @body, @query, @param, @header, @session 데코레이터 지원
- 하나의 클래스에서 body, query, header 등 다양한 요청 정보를 한번에 처리 가능
- 클래스 필드 타입에 맞게 request 값 타입 자동 변환
- @equal, @range, @length 등의 validation 데코레이터로 검증
- @transform 을 이용해 값 변환
- @virtual 을 이용해 다른 필드 값 참조해 값 설정
예시 코드
class RequestExample {
@body()
name!: string
@body()
@min(0)
age!: number
@params()
id!: number
@header()
authorization!: string
}
app.post('/:id', bindingCargo(RequestExample), (req, res) => {
const data = getCargo<RequestExample>(req)
// write your code with bound data
})
관련 링크
- github : https://github.com/Beyond-Imagination/express-cargo
- npm : https://www.npmjs.com/package/express-cargo
- docs : https://beyond-imagination.github.io/express-cargo
피드백 언제든지 환영합니다. 많이 사용해보시고 의견 부탁드립니다