[gelöst]Frage zu Webserver example im wiki.freepascal.org

Alle Fragen zur Netzwerkkommunikation
Antworten
ps4711
Beiträge: 16
Registriert: Mi 1. Dez 2021, 13:39
OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
CPU-Target: 64Bit

[gelöst]Frage zu Webserver example im wiki.freepascal.org

Beitrag von ps4711 »

Hallo alle miteinander,

im wiki auf freepascal.org gibt es ein "Webserver Example" unter folgendem Link:
https://wiki.freepascal.org/fpWeb_Tutor ... er_example

wenn ich das compiliere und starte kann ich folgendes als URL im Browser eingeben:

http://127.0.0.1:8080
Ergibt: Route 1
Also OK!

Ich schaffe es jedoch nicht Route 2 zu starten. Was muss ich im Browser eingeben um Route 2 zu bekommen?
Egal was ich eingebe es kommt immer: "Fehler: Verbindung fehlgeschlagen"

Infos:
Xubuntu 20.04.4.LTS
Lazarus: 2.06+dfsg-3
FPC-Version: 3.0.4
Wenn noch Infos fehlen ... bitte melden wird nachgereicht.

Danke schon mal.

Gruß
PS4711
Zuletzt geändert von ps4711 am Sa 9. Apr 2022, 12:51, insgesamt 1-mal geändert.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Frage zu Webserver example im wiki.freepascal.org

Beitrag von af0815 »

http://127.0.0.1:8080/route2 sollte es meiner Meinung nach sein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ps4711
Beiträge: 16
Registriert: Mi 1. Dez 2021, 13:39
OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
CPU-Target: 64Bit

Re: Frage zu Webserver example im wiki.freepascal.org

Beitrag von ps4711 »

Vielen Dank! Das war's.
Mein Fehler war, dass ich die Portangabe immer ans Ende der URL gepackt habe :?

Noch eine Frage zu dem "Webserver example".
Habe ich das richtig verstanden, dass man mit Hilfe dieser Routen die einzelnen Internetseiten bzw. deren Logikdarstellen kann.
Das heißt man würde eine Route z.B. "Kontaktformular" erstellen und oder z.B. eine Route "Impressum".
Wenn ich das missverstanden habe welche Funktion haben dann die Routen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Frage zu Webserver example im wiki.freepascal.org

Beitrag von af0815 »

Das kommt schon so hin. Die Route gibt an, welcher Programmteil für die Bearbeitung zuständig ist. Aber all zuviel Ahnung habe ich da auch nicht, ich zehre da noch ein wenig von meinen Delphi Schulungen - und die sind auch schon länger her :-)
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Soner
Beiträge: 623
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Frage zu Webserver example im wiki.freepascal.org

Beitrag von Soner »

ps4711 hat geschrieben:
Mi 6. Apr 2022, 20:56
Vielen Dank! Das war's.
Mein Fehler war, dass ich die Portangabe immer ans Ende der URL gepackt habe :?

Noch eine Frage zu dem "Webserver example".
Habe ich das richtig verstanden, dass man mit Hilfe dieser Routen die einzelnen Internetseiten bzw. deren Logikdarstellen kann.
Das heißt man würde eine Route z.B. "Kontaktformular" erstellen und oder z.B. eine Route "Impressum".
Wenn ich das missverstanden habe welche Funktion haben dann die Routen?
Die Route ist so etwas wie Ordner bzw. Dateiteil einer URL. Wenn du z.B. http://127.0.0.1:8080/impressum hast, dann musst du es so registrieren:
HTTPRouter.registerRoute('/impressum', @myimpressum, true);

Der Teil "@myimpressum" gibt deiner Funktionsnamen an, die Funktionsnamen kannst du frei wählen, die Funktion muss aber vorhanden sein, so ähnlich wie vom Beispiel procedure myimpressum(aReq: TRequest; aResp: TResponse);.

ps4711
Beiträge: 16
Registriert: Mi 1. Dez 2021, 13:39
OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
CPU-Target: 64Bit

Re: Frage zu Webserver example im wiki.freepascal.org

Beitrag von ps4711 »

Danke für die Info.

kirchfritz
Beiträge: 169
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Frage zu Webserver example im wiki.freepascal.org

Beitrag von kirchfritz »

Hallo,

ich beziehe mich auf das WebServer Beispiel aus dem obengenannten Tutorial
https://wiki.freepascal.org/fpWeb_Tutor ... er_example

wenn ich das compiliere und starte kann ich folgendes als URL im Browser eingeben:

http://127.0.0.1:8080
Ergibt: Route 1
Also OK!

Nun habe ich aber eine writeln-Anweisung in diesen defaultEndpoint eingebaut

Code: Alles auswählen

procedure route1(aReq: TRequest; aResp: TResponse);
begin
  Writeln(DateTimeToStr(now),' defaultEndpoint');
  aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>';
end;
... und muss dabei feststellen, dass die route1 immer zweimal hintereinander aufgerufen wird.
Was läuft da verkehrt? Wie kann ich das zweimalige Aufrufen verhindern?

Fritz

das ist mein komplettes WebSever-Programm:

Code: Alles auswählen

program project1;

{$mode objfpc}{$H+}

uses
  {$ifdef UNIX}
    cthreads, cmem,
  {$endif}
  sysutils, classes,
  fphttpapp, httpdefs, httproute;

procedure route1(aReq: TRequest; aResp: TResponse);
begin
  Writeln(DateTimeToStr(now),' defaultEndpoint');
  aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>';
end;

procedure route2(aReq: TRequest; aResp: TResponse);
begin
  aResp.content:='<html><body><h1>Route 2</h1></body></html>'
end;

begin
  HTTPRouter.registerRoute('/', @route1, true);
  HTTPRouter.registerRoute('/route2', @route2,false);
  Application.port := 8080;
  Application.threaded := true;
  Application.initialize;
  Application.run;
end.

Antworten