Skip to main content

express-cargo

Declarative, decorator-driven request data handling for Express.js.

import express from 'express'
import { body, bindingCargo, getCargo, min, header, params } from 'express-cargo'

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

class RequestExample {
@body()
name!: string

@body()
@min(0)
age!: number

@params('id')
id!: number

@header()
authorization!: string
}

app.post('/:id', bindingCargo(RequestExample), (req, res) => {
const data = getCargo<RequestExample>(req)
// write your code with bound data
})

app.listen(3000)

Declarative Data Binding

Effortlessly bind request data (body, query, params) to class instances using intuitive decorators, ensuring clean and focused routing logic.

Robust Data Validation

Utilize a rich set of built-in decorators for effortless data validation, ensuring integrity before processing.

Type-Safe & Extensible

Built with TypeScript for full type safety, allowing you to extend the library with custom decorators and transformers.