0Pricing
TypeScript Academy · Урок

Обработчики маршрутизатора, типизация Request/Response

Типизируйте обработчики маршрутов Express: параметры, запросы и тела JSON; отправляйте типизированные ответы с помощью res.json и повторно используемых DTO.

«Обработчики маршрутизатора, типизация Request/Response» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 3 уроков всего.

Введение

Цель: настроить небольшой API Express со строгой типизацией. Вы типизируете параметры маршрута, запрос и тела JSON, а затем вернёте типизированный JSON с помощью res.json.

  • Интерфейсы DTO
  • Request<P, Res, Body, Q>
  • Типизированный res.json

Настройка сервера

Инициализируйте Express и включите разбор JSON. Сделайте конечную точку проверки состояния небольшой и типизированной с помощью Request/Response.

import express, { Request, Response } from "express"

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

app.get("/", (_req: Request, res: Response) => {
  res.type("text/plain").send("OK")
})

app.listen(3000, () => console.log("http://localhost:3000"))

Параметры и запрос

Явно типизируйте каждый слот: параметры, запрос и ResBody. Автодополнение помогает избежать опечаток.

import { Request, Response } from "express"

type Params = { id: string }
 type Query = { verbose?: "1" | "0" }
 type ResBody = { id: string; name: string; details?: string }

export function getUser(req: Request<Params, ResBody, unknown, Query>, res: Response<ResBody>) {
  const { id } = req.params
  const { verbose } = req.query
  const body: ResBody = { id, name: "Ada", details: verbose === "1" ? "Loves math" : undefined }
  return res.status(200).json(body)
}

Типизированное тело и ответ

Аннотируйте body для POST/PUT, а также типизируйте ответ. Ваши DTO одновременно служат документацией.

import { Request, Response } from "express"

type CreateUserBody = { name: string }
 type CreateUserRes = { id: string; name: string }

export function createUser(req: Request<{}, CreateUserRes, CreateUserBody>, res: Response<CreateUserRes>) {
  const { name } = req.body
  const result: CreateUserRes = { id: "u_1", name }
  return res.status(201).json(result)
}

Настройка маршрутов

Составляйте небольшие типизированные обработчики. Параметры маршрута проверяются сопоставлением с шаблоном (например, :id).

import express from "express"
import { getUser } from "./getUser"
import { createUser } from "./createUser"

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

app.get("/users/:id", getUser)
app.post("/users", createUser)

app.listen(3000, () => console.log("http://localhost:3000"))

Советы

Советы:

  • Делайте DTO небольшими и повторно используйте их в обработчиках.
  • Предпочитайте литералы объединения для ограниченных значений запроса.
  • Возвращайте точные коды состояния и типизированный JSON.

Проверка типизации Express

Быстрая проверка: как типизировать обработчик Express с параметрами и телом JSON?

Повторение

Повторение: вы типизировали параметры маршрутов, запросы, тела и ответы. Тот же шаблон масштабируется на маршрутизаторы и промежуточное ПО.

Часто задаваемые вопросы

Урок «Обработчики маршрутизатора, типизация Request/Response» бесплатный?

Да — полный текст урока «Обработчики маршрутизатора, типизация Request/Response» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Обработчики маршрутизатора, типизация Request/Response»?

Типизируйте обработчики маршрутов Express: параметры, запросы и тела JSON; отправляйте типизированные ответы с помощью res.json и повторно используемых DTO. Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 3.

Сколько времени занимает урок «Обработчики маршрутизатора, типизация Request/Response»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обработчики маршрутизатора, типизация Request/Response
  2. Проверка схем с zod и вывод типов в TS
  3. Промежуточное ПО для ошибок и типы результатов
← Назад к TypeScript Academy