AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte HTTP Server Framework für Object Pascal - nun auf GitHub

HTTP Server Framework für Object Pascal - nun auf GitHub

Ein Thema von mjustin · begonnen am 23. Feb 2012 · letzter Beitrag vom 22. Apr 2023
Antwort Antwort
Seite 4 von 4   « Erste     234
mjustin
Registriert seit: 14. Apr 2008
Zur einfachen Erstellung von HTTP Webserveranwendungen zum Beispiel für kleine Web Services kann dieses Server Framework (ab Delphi 2009) und Free Pascal (2.6.0) eingesetzt werden. Es umfasst

* Basisklassen zur Requestverarbeitung: "Web Komponenten" und "Handler"
* eine HTTP Serverumgebung, basierend auf Internet Direct (Indy) 10.6
* Demoanwendungen, Unit Tests, API Dokumentation im HTML Format und eine "Getting Started" Dokumentation

Hello World! Beispiel
Für eine einfache Anwendung, die auf HTTP GET Anforderungen antworten soll, wird eine Klasse von der Basisklasse TdjWebComponent abgeleitet und darin OnGet überschrieben:

Delphi-Quellcode:
type
  THelloPage = class(TdjWebComponent)
  public
    procedure OnGet(Request: TIdHTTPRequestInfo; Response:
      TIdHTTPResponseInfo); override;
  end;

{ THelloPage }

procedure THelloPage.OnGet;
begin
  Response.ContentText := '<html>Hello world!</html>';
end;
Konfiguration
Um von der neuen Klasse nur Anfragen auf die URL http://127.0.0.1/example/hello.html zu beantworten, sind zwei Quelltextzeilen erforderlich:

Delphi-Quellcode:
    Context := TdjWebAppContext.Create('example');
    Context.Add(THelloPage, '/hello.html');
Mit dieser Anweisung wird die Klasse (THelloPage) im Kontext 'example' der absoluten URL /hello.html zugeordnet. Der 'Dateiname', hier hello.html, ist völlig frei wählbar, es gibt also keine zugeordnete hello.html Datei im Dateisystem.

Unter einem Kontext können beliebig viele Registrierungen für Klassen und ihre URI angelegt werden. Einem Server können beliebig viele Kontexte hinzugefügt werden.

Kontextbezogene statische Resourcen
Jeder Kontext hat ein eigenes Verzeichnis für statische Resourcen. Dadurch kann ein Server für jeden Kontext auch unterschiedliche CSS oder JS Dateien bereitstellen.

Projekt:
https://darajaframework.com/

Quelltext auf GitHub:
https://github.com/michaelJustin/daraja-framework

"Getting Started" PDF
https://darajaframework.com/docs/1.0...ingStarted.pdf

API Dokumentation:
https://darajaframework.com/docs/1.0/

Geändert von mjustin (22. Apr 2023 um 12:44 Uhr) Grund: Namensänderung
 
ConstantGardener

 
Delphi 10.4 Sydney
 
#31
  Alt 20. Mär 2016, 09:45
...sehr schön. Ich setze den Vorgänger (Habari Web Components) schon länger kommerziell ein und kann ihn nur empfehlen! Ein Blick lohnt sich in jedem Fall und ist jetzt ja sehr "schmerzfrei" (sprich kostenlos) möglich. Da bekommt man direkt Lust mal eine kleine DEMO zusammenzuschrauben.

Danke Dir erstmal für die bisherige Arbeit!

cu cg
Andreas Schachtner
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#32
  Alt 2. Jul 2016, 14:28
Die RESTful Erweiterung des Daraja Framework ist nun als Version 2.0 auf GitHub verfügbar:

https://github.com/michaelJustin/daraja-restful

Sie enthält als wesentliche Neuerung Unterstützung von Free Pascal.

Da in Free Pascal Anonyme Funktionen bisher nicht unterstützt werden, muss stattdessen eine Referenz auf eine Methode übergeben werden.

Beispiel: Delphi ...
Delphi-Quellcode:
   &Path('hello');
   &Produces('text/html');
   GET
    (procedure(Request: TRequest; Response: TResponse)
     begin
       Response.ContentText := '<html>Hello world!</html>';
     end);
...Free Pascal:
Delphi-Quellcode:
   &Path('hello');
   &Produces('text/html');
   GET
    (MyGetMethod);

...


   procedure TMyRestComponent.MyGetMethod(Request: TRequest; Response: TResponse);
   begin
     Response.ContentText := '<html>Hello world!</html>';
   end;
Unittests sind nun für Delphi (DUnit) und Free Pascal (FPCUnit) enthalten.

Feedback ist wie immer herzlich willkommen.
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#33
  Alt 21. Jul 2017, 10:08
Das Release Version 1.2 ist zwar schon eine Weile her, hier aber dennoch eine Zusammenfassung der Änderungen

https://github.com/michaelJustin/dar...leases/tag/1.2

* Struktur der Unittests überarbeitet
* Neue HTTP Hilfsklassen für Unittests
* Die Typen TdjRequest und TdjResponse werden auch in Demoprogrammen und Unittests verwendet
* Das SLF4P Logging Framework wird auch in Demoprogrammen und Unittests verwendet
* Das Bootstrap Demo wurde aktualisiert
* Free Pascal 2.x Support wurde entfernt, Free Pascal 3.0.2 oder neuer kann verwendet werden

Allen Anwender des Frameworks wird empfohlen die neue Version zu testen und Verbesserungswünsche sind willkommen (Adresse siehe https://www.habarisoft.com/daraja_framework.html)
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#34
  Alt 15. Mär 2019, 13:22
Release 1.2.9 des auf Indy basierenden Open Source Frameworks ist nun erschienen.

Neu im Daraja HTTP Framework seit Version 1.2:

Beispiele für Authentication und Authorization mit OpenID Connect und OAuth 2.0:
* GitHub API Zugang mit OAuth 2.0 Authorization (Tutorial 10) Blogartikel
* Google OpenID Connect Authentication (Tutorial 9)
* Google API Zugang mit Zugriff auf die Google Drive API und OAuth 2.0 Authorization (Tutorial 8) Blogartikel
* Google Sign In mit JavaScript (Tutorial 7)

Verbesserte UTF-8 Unterstützung
* Für In Free Pascal ist ein Patch enthalten mit dem das Einbinden der LazUTF8 Unit verbesserte UTF-8 Unterstützung erreicht wird (utf8helper Unit im demo/common Verzeichnis)

Twitter Bootstrap Demo
* Das Demoprojekt wurde auf Bottstrap 4 aktualisiert

Formularbasierte Anmeldung
* Tutorial 6 und 7 demonstrieren formularbasierte Anmeldung

HTTPS
* Demoanwendung für HTTPS (erfordert TLS Zertifikate)

Die vollständigen Release Notes auf GitHub: https://github.com/michaelJustin/dar...ework/releases

Getting Started PDF: https://www.habarisoft.com/daraja_fr...ingStarted.pdf

API Dokumentation: http://michaeljustin.github.io/daraja-framework/
Michael Justin
  Mit Zitat antworten Zitat
mjustin

 
Delphi 2009 Professional
 
#35
  Alt 22. Apr 2023, 12:59
Daraja HTTP Framework 2.6.beta.1

Das Daraja HTTP Server framework enthält in der kommenden Version 2.6 eine vieseitig verwendbare funktionale Neuerung in Form der WebFilter.
Mit einem WebFilter können HTTP Request und HTTP Response vor- und nachbearbeitet werden.
Einsatzbereiche für Filter sind zum Beispiel:
* Prüfen, Setzen und Entfernen von HTTP Header-Parametern
* Ersetzen von Texten auf oder Hinzufügen von Kopf- oder Fusszeilen
* Weiterleitung auf Login-Seiten
* Schreiben von Logdateien.

Source Code der Version 2.6.beta.1 ist hier zu finden:

https://github.com/michaelJustin/dar...tag/2.6-beta.1

Die Tests für Delphi (DUnit) und Lazarus / Free Pascal (FPCUnit) enthalten bereits einige Anwendungsbeispiele.

Ein Filter, der alle Requests verarbeitet (Path /*) und an das Ende des Dokuments den Text " filtered" anhängt, wird in diesem Unittest verwendet:

Delphi-Quellcode:
procedure TAPIConfigTests.TestCatchAllWebFilter;
var
  Server: TdjServer;
  Context: TdjWebAppContext;
begin
  // configure
  Context := TdjWebAppContext.Create('web');
  Context.AddWebComponent(TExamplePage, '*.txt');
  Context.AddFilterWithMapping(TTestFilter, '/*');

  // run
  Server := TdjServer.Create;
  try
    Server.Add(Context);
    Server.Start;

    CheckGETResponseEquals('example (filtered)', '/web/anypage.txt');
  finally
    Server.Free;
  end;
end;
Filterdefinition:

Delphi-Quellcode:
TTestFilter = class(TdjWebFilter)
public
  procedure DoFilter(Context: TdjServerContext; Request: TdjRequest;
    Response: TdjResponse; const Chain: IWebFilterChain); override;
end;

procedure TTestFilter.DoFilter(Context: TdjServerContext; Request: TdjRequest;
  Response: TdjResponse; const Chain: IWebFilterChain);
begin
   Chain.DoFilter(Context, Request, Response);
   Response.ContentText := Response.ContentText + ' (filtered)';
end;
Michael Justin

Geändert von mjustin (22. Apr 2023 um 13:37 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz