FCL-webb

FCL-Web är en del av Free Pascals Free Component Library (FCL), med fokus på webb (relaterad) applikationsutveckling. Paketet hjälper användare att utveckla CGI , FastCGI och inbäddade webbserverapplikationer, såväl som Apache-moduler . Det tillhandahåller enheter som implementerar HTTP(S)-protokoll och ett webbapplikationsramverk på något låg nivå, i form av webbmoduler. Vissa innehållsproducenter (t.ex. för automatisk generering av innehåll från dataset) tillhandahålls också. Annan framträdande användning är att skicka/hämta data från/till webbtjänster (eventuellt med JSON-RPC).

Stödenheter för webbapplikationer

fpcgi, fpfcgi, fphttpapp och fpapache[24] är enheterna som implementerar CGI, FastCGI, inbäddad webbserver respektive Apache-modul. Gränssnittet mellan enheterna görs liknande genom att använda objektorienterat arv. Därför är en ändring av använd enhet i användningsklausulen tillräcklig för att skapa alla 4 typer av webbapplikationer, utan kodändringar för det mesta av resten av applikationen. Ett anmärkningsvärt undantag kan vara behovet av att ställa in port för FastCGI och inbäddad webbserver.

Andra enheter

  • httpdefs-enheten definierar basklasser för cookies, sessioner, filuppladdningar, mimehantering, HTTP-huvud, begäran och svar
  • iniwebsession-enheten implementerar sessionshantering med .ini-filer
  • fphttpserver-enhet tillhandahåller en klar att använda multitrådad fristående http-server
  • fphttpclient unit tillhandahåller klass för att skicka http-förfrågningar och hämta dess svar. Den implementerar alla tillgängliga HTTP 1.1-metoder.\
  • fphtml-enhet tillhandahåller innehållsproducenter
  • fphttp-enheten tillhandahåller stöd för abstrakt webbramverk med hjälp av webbmoduler
  • fpweb-enhet tillhandahåller en implementering av fphttps:s abstrakta webbramverk

fpWeb Framework

fpWeb arkitektur

fpWeb är ett ramverk byggt ovanpå fcl-web-enheter och är i sig en del av fcl-web. Arkitekturen är ganska modulär och ett RAD-paket för användning med Lazarus är tillgängligt. En fpWeb-applikation består av en eller flera webbmoduler, med valfria en eller flera webbåtgärder för varje modul.

Ramverket använder statisk routing i form av:

<base URL><i>/</i> <b>/</b><module name> <i>[/</i> <b>[/</b><action name> <i>]</i> <b>]</b>

<modulnamn> bestäms från namnet som ges som argument till RegisterHTTPModule- anrop, medan <åtgärdsnamn> bestäms från nyckeln i åtgärdskartan för varje modul. Som alternativ stöds även GET-stilsrutt:

<base URL><i>/?module=</i> <b>/?modul=</b><module name> <i>[&action=</i> <b>[&action=</b><action name> <i>]</i> <b>]</b>

Strängen "modul" och "action" kan konfigureras genom ModuleVariable respektive ActionVar .

Begäran hanteras på ett överlappande sätt med hjälp av följande algoritm:

  1. Kör modulens begäranhanterare (TFPWebModule.OnRequest)
  2. Om begäran hanteras (TFPWebModule.OnRequest Handled parameter satt till true), skicka svaret
  3. I annat fall, delegera begäran om hantering till webbåtgärder
    1. Hitta webbåtgärd motsvarar aktuell sökväg, använd eventuellt omdirigering/omskrivning (TFPWebModule.OnGetAction)
    2. Om den hittas, kör webbåtgärdens begäranhanterare (TFPWebAction.OnRequest)
      1. Om begäran hanteras (TFPWebAction.OnRequest Handled parameter satt till true), skicka svaret
      2. Annars, höj begäran ej hanterad undantag
    3. Annars, höj begäran ej hanterad undantag

Vidare läsning