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
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.
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
- Typowanie handlerów routera, Request/Response
- Walidacja schematów za pomocą zod i inferencja do TS
- Middleware błędów i typy Result