Moderne Backend-Entwicklung muss nicht zwingend in JavaScript, Python oder Go erfolgen. Mit dem Pascal-Framework Horse und der Runtime CrabPascal lassen sich REST-APIs direkt aus .dpr-Dateien heraus betreiben – ohne IIS, Apache oder externe Abhängigkeiten. Die Kombination aus der vertrauten Syntax von Delphi und der Leistungsfähigkeit von Horse eröffnet Pascal-Entwicklern neue Wege für die serverseitige Programmierung.
Warum Horse in CrabPascal?
Horse ist ein schlankes HTTP-Framework, das besonders im Delphi-Ökosystem beliebt ist. Es bietet Routing, JSON-Unterstützung und Middleware-ähnliche Handler – alles direkt einsatzbereit im CrabPascal-Ökosystem. Die Runtime-Compilation übernimmt der interne HTTP-Stack, sodass keine zusätzlichen Tools wie gcc erforderlich sind. Die mitgelieferten Beispiele decken typische Anwendungsfälle ab:
examples/crud/– Vollständige CRUD-Operationen für Produkte auf Port 9000examples/time-server/– Einfacher Endpunkt zur Abfrage von Zeit und Datum auf Port 9001examples/agenda/– Kontaktverwaltung auf Port 9000
Alle Beispiele lassen sich mit wenigen Befehlen starten und testen.
Minimale REST-API in Pascal
Ein minimaler API-Server in Pascal besteht aus nur wenigen Zeilen Code. Die Implementierung nutzt das Horse-Framework und die System.JSON-Bibliothek für die Antwortformatierung. Der folgende Ausschnitt zeigt die Definition eines einfachen Ping-Endpunkts:
program SimpleAPI;
uses
Horse,
System.JSON;
begin
THorse.Get('/ping',
procedure(Req: THorseRequest; Res: THorseResponse; Next: TNextProc)
var J: TJSONObject;
begin
J := TJSONObject.Create;
J.AddPair('message', 'pong');
Res.Send(J.ToJSON);
J.Free;
end
);
THorse.Listen(9000);
end.Der Server wird mit dem Befehl crab-pascal run SimpleAPI.dpr gestartet. Ein Test mit curl bestätigt die Funktionsweise:
curl Die erwartete Antwort lautet:
{"message":"pong"}Praktisches CRUD-Beispiel aus der Praxis
Das Repository enthält ein vollständiges CRUD-Beispiel für ein Produktmanagement-System. Der folgende Codeausschnitt zeigt die Implementierung eines Endpunkts zum Erstellen neuer Produkte:
THorse.Post('/produtos',
procedure(Req, Res, Next)
var json: TJSONObject;
begin
json := Req.Body<TJSONObject>;
Res.Send(
TProdutoService.CriarProduto(
json.GetValue('nome').Value,
json.GetValue('categoria').Value,
StrToFloatDef(json.GetValue('preco').Value, 0),
StrToIntDef(json.GetValue('estoque').Value, 0)
)
);
end
);Der Server wird im Verzeichnis examples/crud/ mit folgendem Befehl gestartet:
cd examples/crud
crab-pascal run crud.dprTesten der API mit curl
Die API lässt sich bequem mit curl testen. Die folgenden Befehle demonstrieren typische Operationen:
- Alle Produkte auflisten:
curl - Neues Produkt erstellen:
curl -X POST \
-H "Content-Type: application/json" \
-d '{"nome":"Notebook","categoria":"Eletrônicos","preco":3499.90,"estoque":10}'- Produkt nach ID abfragen:
curl Integration in Postman für Regressionstests
Für eine strukturierte API-Entwicklung eignet sich die Integration in Postman. Nach dem Start des Servers können die curl-Befehle direkt in Postman importiert werden:
- Server mit
crab-pascal run crud.dprstarten. - In Postman
Import → Raw textauswählen und diecurl-Befehle einfügen. - Die Anfragen als Collection speichern, um Regressionstests zu automatisieren.
Die offizielle Dokumentation von Mintlify stellt eine vollständige Postman-Collection für alle Beispiel-APIs bereit.
Konfiguration und Port-Verwaltung
Die Standardport-Konfiguration lässt sich in der Datei crabpascal.toml anpassen. Dies ermöglicht die gleichzeitige Ausführung mehrerer Server auf unterschiedlichen Ports:
[runtime]
default_http_port = 9000Durch Anpassung der Ports können mehrere Instanzen lokal betrieben werden, ohne Konflikte zu verursachen.
Einschränkungen und Ausblick
Aktuell unterstützt CrabPascal mit Horse die Kernfunktionen Routing und JSON-Verarbeitung. Nicht alle Delphi-Middleware-Plugins sind bereits kompatibel. Für neue HTTP-Features empfiehlt sich ein Blick in die Release Notes der aktuellen Sprints. Dennoch eignet sich die Kombination ideal für Pascal-Entwickler, die REST-APIs lernen oder Backend-Prototypen erstellen möchten. Die mitgelieferten Beispiele sind vollständig funktionsfähig und bieten einen soliden Einstieg.
Pascal + Horse + CrabPascal ermöglichen die Entwicklung von Backend-Skripten, die sich für Delphi-Entwickler natürlich anfühlen – und das in einem einzigen Rust-kompilierten Binary. Beginnen Sie mit dem Beispiel examples/crud/, testen Sie die Endpunkte und entwickeln Sie Ihre eigene API weiter.
KI-Zusammenfassung
Pascal dilinde REST API geliştirmeye meraklı mısınız? Horse framework ve CrabPascal ile sıfırdan API oluşturarak backend geliştirmenin inceliklerini keşfedin.