Skip to content

Instantly share code, notes, and snippets.

@alexbartsch
Created November 29, 2023 21:25
Show Gist options
  • Save alexbartsch/b1ba3208fa08a2b93083af4225cbbe83 to your computer and use it in GitHub Desktop.
Save alexbartsch/b1ba3208fa08a2b93083af4225cbbe83 to your computer and use it in GitHub Desktop.

Übung: Einführung in Node.js Express und REST-Schnittstelle

Schritte

Projektinitialisierung

  • Erstelle ein neues Verzeichnis für dein Projekt.
  • Navigiere in das Projektverzeichnis.
  • Führe den Befehl npm init aus, um ein neues package.json-Datei zu erstellen.

Express-Installation und Body-Parser

Installiere das Express-Framework und body-parser mithilfe der Befehle:

npm install express
npm install body-parser

Serverdatei erstellen

Erstelle eine Datei, um deinen Express-Server-Code zu schreiben. Zum Beispiel server.js.

Middleware hinzufügen

Füge express.json() und express.urlencoded({ extended: true }) als Middleware hinzu, um JSON-Daten und Formulardaten im Request-Body zu verarbeiten. Füge dies vor deinen Routen hinzu.

Beispielcode-Snippet:

const express = require('express');
const bodyParser = require('body-parser');
const fs = require('fs');

const app = express();
const port = 3000;

// Middleware für JSON-Daten und Formulardaten
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// Deine Routen kommen hier ...

// Server starten
app.listen(port, () => {
  console.log(`Der Server läuft auf http://localhost:${port}`);
});

Route zum Schreiben von Informationen

Erstelle eine Route (z.B., POST /write-info), die die Informationen aus dem Body der Anfrage nimmt und sie in eine JSON-Datei schreibt.

Beispielcode-Snippet:

app.post('/write-info', (req, res) => {
  const { name, data } = req.body;
  const filePath = `./data/${name}.json`;
  fs.writeFileSync(filePath, JSON.stringify(data));
  res.send('Daten erfolgreich gespeichert!');
});

Route zum Lesen von Dateien anhand eines Namens

Erstelle eine Route (z.B., GET /read-info/:name), die den Namen als Parameter entgegennimmt und die entsprechende Datei ausliest.

Beispielcode-Snippet:

app.get('/read-info/:name', (req, res) => {
  const name = req.params.name;
  const filePath = `./data/${name}.json`;

  try {
    const data = fs.readFileSync(filePath, 'utf8');
    res.json(JSON.parse(data));
  } catch (error) {
    res.status(404).send('Datei nicht gefunden');
  }
});

Daten verarbeiten und speichern

Implementiere die Logik innerhalb der Routen, um Daten aus dem Request-Body zu extrahieren und in die JSON-Datei zu schreiben oder sie daraus zu lesen.

Server starten

Führe den Befehl node server.js aus, um deinen Express-Server zu starten. Überprüfe die Konsolenausgabe, um sicherzustellen, dass der Server auf dem richtigen Port läuft.

API überprüfen

Verwende ein Tool wie cURL, Postman oder den integrierten Entwicklertools deines Browsers, um die erstellten Routen zu testen. Sende POST-Anfragen an http://localhost:3000/write-info mit JSON-Daten im Body und GET-Anfragen an http://localhost:3000/read-info/:name (ersetze :name durch den gewünschten Namen).

Hier sind Beispiele für cURL-Befehle, um POST- und GET-Anfragen an die erstellten Routen zu senden:

POST-Anfrage

curl -X POST -H "Content-Type: application/json" -d '{"name": "example", "data": {"key": "value"}}' http://localhost:3000/write-info

GET-Anfrage

curl http://localhost:3000/read-info/example

Dieser Befehl sendet eine GET-Anfrage an http://localhost:3000/read-info/example. Ersetze "example" durch den tatsächlichen Namen, den du abrufen möchtest.

Diese cURL-Befehle dienen nur zu Demonstrationszwecken. In der Praxis könntest du Tools wie Postman verwenden, um die API-Anfragen auf eine benutzerfreundlichere Weise zu testen und zu verwalten.

Dieser Ansatz ermöglicht es, JSON-Daten aus dem Body von POST-Anfragen zu extrahieren und in die JSON-Datei zu schreiben. Du kannst dies weiter anpassen und erweitern, um zusätzliche Funktionen zu integrieren.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment