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 ä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:
- Kör modulens begäranhanterare (TFPWebModule.OnRequest)
- Om begäran hanteras (TFPWebModule.OnRequest Handled parameter satt till true), skicka svaret
- I annat fall, delegera begäran om hantering till webbåtgärder
- Hitta webbåtgärd motsvarar aktuell sökväg, använd eventuellt omdirigering/omskrivning (TFPWebModule.OnGetAction)
- Om den hittas, kör webbåtgärdens begäranhanterare (TFPWebAction.OnRequest)
- Om begäran hanteras (TFPWebAction.OnRequest Handled parameter satt till true), skicka svaret
- Annars, höj begäran ej hanterad undantag
- Annars, höj begäran ej hanterad undantag
Vidare läsning
- Leonardo M. Ramé: Lazarus Server
- Leonardo M. Ramé: Webbprogrammering med objekt Pascal
- Michaël Van Canneyt: Lazarus för webben
- Michaël Van Canneyt: Skapa en enkel webbserver i Lazarus
- Mario Ray Mahardhika: Grundläggande handledning för fpWeb