Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   dwf - Web Framework für Delphi (https://www.delphipraxis.net/165882-dwf-web-framework-fuer-delphi.html)

mjustin 19. Jan 2012 16:41


dwf - Web Framework für Delphi
 
Liste der Anhänge anzeigen (Anzahl: 4)
Einen eigenen lokalen HTTP Webserver in Delphi zu erstellen, ist mit dem dwf Web Framework für Delphi eine Sache weniger Zeilen Quelltext.
Delphi-Quellcode:
program ExampleWebServer;

...

begin

  // Anwendungskontext festlegen (gilt für alle nachfolgenden Path Anweisungen)
  &Context('myapp');

  // URL-Pfad unterhalb des Kontexts festlegen
  &Path('helloworld');

  // Der Code für das Erzeugen einer Antwort auf eintreffende HTTP GET Anfagen
  GET
    (procedure(Request: TRequest; Response: TResponse)
    begin
      Response.ContentText :=
        '<html><title>Hello world</title>Hello world!</html>';
    end);

  // Server starten
  StartServer;

  // Ende
  WriteLn('Die Test-URL ist: http://127.0.0.1/myapp/helloworld');
  ReadLn;

end.
Und ein Beispiel für HTTP POST, mit einem Formular:

Delphi-Quellcode:
program ExampleWebServer;

...

begin

  // HTML FORM example --------------------------------------------------
  &Path('form');
  // The Delphi method will process HTTP GET requests -------------------
  GET
   (procedure(Request: TRequest; Response: TResponse)
    begin
      Response.ContentText := '<html><form method="POST" action="form">'
        +'<input name="var" value="hello world"><input type="submit"></form></html>';
    end);

  &Path('form');
  // The Delphi method will process HTTP POST requests -------------------
  POST
   (procedure(Request: TRequest; Response: TResponse)
    begin
      Response.ContentText := 'var=' + Request.Params.Values['var'];
    end);

  StartServer;
  // wait ---------------------------------------------------------------
  WriteLn('Server is running. Hit any key to terminate.');
  ReadLn;

end.
"Pfad-Parameter" können auch über Platzhalter definiert werden, und stehen im Handler dann als normale Requestparamter zur Verfügung:

Delphi-Quellcode:
program ExampleWebServer;

...

begin

  &Path('params/{p1}/{p2}');
  &Produces('text/html');
  GET
    (procedure(Request: TRequest; Response: TResponse)
    begin
      Response.ContentText :=
        Format('<html><title>Hello world</title>Hello world! ... %s %s</html>',
        [Request.Params.Values['p1'], Request.Params.Values['p2']]);
    end);

  StartServer;

  WriteLn('Server is running. Hit any key to terminate.');
  ReadLn;

end.

Last but not least - ein Beispiel mit HTTP Server Sessions:

Delphi-Quellcode:
program Example3Sessions;

...

begin

  // The Delphi method will process HTTP GET requests -------------------
  &Path('counter');
  GET
   (procedure(Request: TRequest; Response: TResponse)
    var
      NextCounter: string;
    begin
      NextCounter := IntToStr(1 + StrToIntDef(Request.Session.Content.Values['Counter'], 0));
      Request.Session.Content.Values['Counter'] := NextCounter;
      Response.ContentText := 'Counter: ' + NextCounter;
    end);

  StartServer;
  // wait ---------------------------------------------------------------
  WriteLn('Server is running. Hit any key to terminate.');
  ReadLn;

end.
Update:

Das dwf Framework wurde inzwischen in die Habari Web Components Library (Version 1.0.1) integriert, in Form der TdjRestfulComponent.

Ein englischsprachiger Blogartikel ist hier im Web:

http://mikejustin.wordpress.com/dwf/


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:13 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