Перейти к основному содержимому

Базовое использование

Этот пример показывает простейший сквозной поток express-cargo: определить класс запроса, привязать его с помощью middleware 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. Применить middleware​

Передайте класс запроса в bindingCargo и зарегистрируйте его как middleware на маршруте. Middleware привязывает и проверяет запрос до выполнения вашего обработчика.

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"
}
}

Дальнейшие шаги​