TypeScript Academy · Lekcja

Typowanie handlerów routera, Request/Response

Typowanie handlerów tras Express: parametrów, query i ciał JSON oraz wysyłanie typowanych odpowiedzi za pomocą res.json i wielokrotnego użytku DTO

Lekcja 1 z 38 kroki

Typowanie handlerów routera, Request/Response to bezpłatna lekcja TypeScript Academy na CoddyKit. To lekcja 1 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej TypeScript Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs TypeScript Academy zawiera 3 lekcji w sumie.

Wprowadzenie

Cel: Skonfigurować małe API Express z restrykcyjnym typowaniem. Otypujesz params, query i body JSON tras, a następnie zwrócisz typowany JSON za pomocą res.json.

  • Interfejsy DTO
  • Request<P, Res, Body, Q>
  • Typowane res.json

Konfiguracja serwera

Zainicjalizuj Express i włącz parsowanie JSON. Niech endpoint health będzie mały i typowany za pomocą 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"))

Parametry i query

Jawnie otypuj każdy element: Params, Query i ResBody. Autouzupełnianie pomaga unikać literówek.

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

Typowane body i res

Dodaj adnotację typu dla body w żądaniach POST/PUT, a także typowaną odpowiedź. DTO pełnią jednocześnie funkcję dokumentacji.

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

Definiowanie tras

Twórz małe, typowane handlery. Parametry tras są walidowane przez dopasowanie do szablonu (np. :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"))

Wskazówki

Wskazówki:

  • Niech DTO będą małe i używaj ich ponownie w handlerach.
  • Preferuj literały unii dla ograniczonych wartości query.
  • Zwracaj precyzyjne kody statusu i typowany JSON.

Sprawdzanie typowania Express

Szybkie sprawdzenie: jak otypować handler Express z parametrami i body JSON?

Podsumowanie

Podsumowanie: Otypowałeś parametry tras, query, body i odpowiedzi. Ten sam wzorzec można rozszerzyć na routery i middleware.

Bezpłatny start

Ucz się TypeScript dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
101
Lekcje
352

Często zadawane pytania

Czy lekcja „Typowanie handlerów routera, Request/Response” jest bezpłatna?

Tak — pełny tekst „Typowanie handlerów routera, Request/Response” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu TypeScript Academy, przejdź na CoddyKit PRO. Kurs TypeScript Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Typowanie handlerów routera, Request/Response”?

Typowanie handlerów tras Express: parametrów, query i ciał JSON oraz wysyłanie typowanych odpowiedzi za pomocą res.json i wielokrotnego użytku DTO Ćwiczysz TypeScript Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć TypeScript Academy?

Nie wymagamy żadnego doświadczenia. TypeScript Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 3.

Ile czasu zajmuje lekcja „Typowanie handlerów routera, Request/Response”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji TypeScript Academy?

Tak. Każda lekcja TypeScript Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Typowanie handlerów routera, Request/Response
  2. Walidacja schematów za pomocą zod i inferencja do TS
  3. Middleware błędów i typy Result
← Powrót do TypeScript Academy