Wie man eine minimale REST-API in Node.js erstellt
Sie benötigen ein schnelles Backend für Ihr Frontend-Projekt. Vielleicht ist es ein Prototyp, eine lokale Entwicklungsumgebung oder ein einfacher Produktionsdienst. Das Einrichten einer Node.js-REST-API sollte keine Woche Konfiguration erfordern.
Dieser Leitfaden führt Sie durch den Aufbau einer minimalen REST-API mit modernem Node.js und Express 5. Sie erhalten JSON-Parsing, ordnungsgemäße Fehlerbehandlung und eine saubere Struktur – alles in ~80 Codezeilen.
Wichtigste Erkenntnisse
- Erstellen Sie eine funktionsfähige REST-API mit Express 5 in ~80 Codezeilen
- Verwenden Sie integrierte Middleware für JSON-Parsing ohne externe Abhängigkeiten
- Implementieren Sie konsistente Antwortmuster mit korrekten HTTP-Statuscodes
- Fügen Sie eine zentralisierte Fehlerbehandlung hinzu, um unerwartete Serverausfälle zu reduzieren
Voraussetzungen
Stellen Sie vor dem Start sicher, dass Sie Folgendes haben:
- Node.js 24 LTS oder neuer installiert (kann von der offiziellen Node.js-Website heruntergeladen werden)
- Einen Code-Editor
- Grundlegende JavaScript-Kenntnisse
Projekt-Setup
Erstellen Sie ein neues Verzeichnis und initialisieren Sie Ihr Projekt:
mkdir minimal-api
cd minimal-api
npm init -y
Installieren Sie Express 5:
npm install express
Öffnen Sie package.json und fügen Sie "type": "module" hinzu, um ESM-Imports zu aktivieren. Ihre Datei sollte Folgendes enthalten:
{
"type": "module",
"scripts": {
"start": "node server.js"
}
}
Erstellen Ihrer Express 5 API
Erstellen Sie server.js mit folgendem Code:
import express from 'express'
const app = express()
const PORT = process.env.PORT || 3000
// Built-in JSON parsing middleware
app.use(express.json())
// In-memory data store
let items = [
{ id: 1, name: 'First item' },
{ id: 2, name: 'Second item' }
]
let nextId = 3
// GET all items
app.get('/api/items', (req, res) => {
res.json({ data: items })
})
// GET single item
app.get('/api/items/:id', (req, res) => {
const item = items.find(i => i.id === parseInt(req.params.id))
if (!item) {
return res.status(404).json({ error: 'Item not found' })
}
res.json({ data: item })
})
// POST new item
app.post('/api/items', (req, res) => {
const { name } = req.body
if (!name) {
return res.status(400).json({ error: 'Name is required' })
}
const newItem = { id: nextId++, name }
items.push(newItem)
res.status(201).json({ data: newItem })
})
// DELETE item
app.delete('/api/items/:id', (req, res) => {
const index = items.findIndex(i => i.id === parseInt(req.params.id))
if (index === -1) {
return res.status(404).json({ error: 'Item not found' })
}
items.splice(index, 1)
res.status(204).send()
})
// 404 handler for undefined routes
app.use((req, res) => {
res.status(404).json({ error: 'Route not found' })
})
// Error handling middleware
app.use((err, req, res, next) => {
console.error(err.stack)
res.status(500).json({ error: 'Internal server error' })
})
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`)
})
Starten Sie Ihren Server:
npm start
Die Struktur der JavaScript-Backend-API verstehen
Dieses minimale REST-API-Node-Setup deckt die Grundlagen ab:
JSON-Parsing: Express 5 enthält express.json() als integrierte Middleware. Es werden keine externen Pakete benötigt (siehe die Express API-Dokumentation).
Konsistente Antworten: Jeder Endpoint gibt JSON mit entweder einer data- oder error-Eigenschaft zurück. Diese Vorhersehbarkeit hilft Frontend-Code, Antworten einheitlich zu verarbeiten.
HTTP-Statuscodes: Die API verwendet angemessene Codes – 200 für Erfolg, 201 für erstellte Ressourcen, 204 für erfolgreiche Löschungen, 400 für fehlerhafte Anfragen, 404 für fehlende Ressourcen und 500 für Serverfehler.
Fehlerbehandlung: Die allgemeine Error-Middleware verhindert, dass nicht behandelte Routing-Fehler Ihren Server zum Absturz bringen.
Discover how at OpenReplay.com.
Testen Ihrer Endpoints
Verwenden Sie curl oder einen beliebigen HTTP-Client:
# Get all items
curl http://localhost:3000/api/items
# Get single item
curl http://localhost:3000/api/items/1
# Create item
curl -X POST http://localhost:3000/api/items \
-H "Content-Type: application/json" \
-d '{"name": "New item"}'
# Delete item
curl -X DELETE http://localhost:3000/api/items/1
Was hier nicht enthalten ist
Dieser Leitfaden lässt absichtlich Datenbanken, Authentifizierung und komplexe Validierung aus. Diese Aspekte sind für Produktionssysteme wichtig, fügen aber unnötiges Rauschen hinzu, wenn Sie die Grundlagen lernen oder schnell einen Prototyp erstellen.
Wenn Sie bereit sind zu erweitern, ziehen Sie Folgendes in Betracht:
- Eingabevalidierung mit einer Bibliothek wie Zod
- Umgebungsvariablen für die Konfiguration
- Eine Datenbankverbindung für Persistenz
Fazit
Sie haben jetzt eine funktionierende minimale REST-API in Node.js mit Express 5. Das hier gezeigte Muster – konsistente JSON-Antworten, korrekte Statuscodes und zentralisierte Fehlerbehandlung – skaliert gut, wenn Ihre API wächst. Beginnen Sie mit dieser Grundlage und fügen Sie Komplexität nur dann hinzu, wenn Ihr Projekt es erfordert.
Häufig gestellte Fragen (FAQs)
Express 5 enthält native Promise-Unterstützung für Route-Handler, was bedeutet, dass zurückgegebene oder geworfene abgelehnte Promises automatisch die Error-Middleware auslösen. Es entfernt auch veraltete Methoden und verbessert das Path-Matching. Die Kern-API bleibt ähnlich, sodass die Migration von Express 4 für die meisten Projekte unkompliziert ist.
Ein In-Memory-Speicher hält das Beispiel auf die API-Struktur fokussiert und nicht auf die Datenbankkonfiguration. Es funktioniert gut für Prototypen und zum Lernen. Für die Produktion ersetzen Sie das Array durch eine Datenbank wie PostgreSQL oder MongoDB, um Daten über Server-Neustarts hinweg zu persistieren.
Installieren Sie das cors-Paket mit npm install cors, importieren Sie es dann und fügen Sie app.use(cors()) vor Ihren Routen hinzu. Sie können Optionen übergeben, um einzuschränken, welche Origins auf Ihre API zugreifen können. Dies ist notwendig, wenn Ihr Frontend auf einer anderen Domain oder einem anderen Port als Ihr Backend läuft.
Diese Struktur bietet eine solide Grundlage, benötigt aber Ergänzungen für den Produktionseinsatz. Fügen Sie Eingabevalidierung, Authentifizierung, Rate Limiting, Logging und eine ordnungsgemäße Datenbank hinzu. Das hier gezeigte konsistente Antwortformat und die Fehlerbehandlungsmuster skalieren gut, wenn Sie diese Features hinzufügen.
Gain Debugging Superpowers
Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.