IBA Verklaart POST Requests

Zo rond het begin van de jaren negentig kwam Tim Berners-Lee op het idee van het WereldWijde Web. Alle informatie op de wereld wordt daarmee aan elkaar gekoppeld met behulp van pagina’s die links bevatten naar andere pagina’s. Met een browserprogramma dat HTTP (Hypertext Transfer Protocol) spreekt, kan iedereen deze pagina’s ophalen van servercomputers die over de hele wereld verspreid zijn. Meer dan twintig jaar later is het principe van het web nog ongeveer hetzelfde gebleven, maar dan compleet anders opgevat. Pagina’s zijn geen statische documenten meer die ergens op een harde schijf staan, maar interactieve programma’s die doen alsof ze statische documenten zijn die ergens op een harde schijf staan. Daarbij komt nog aardig wat kijken.

Documenten kunnen in HTTP door een browser opgehaald worden door het commando GET te versturen (met wat relevante informatie erbij), maar je kunt ook gegevens insturen met het POST-commando, bestanden versturen en verwijderen met PUT en DELETE en koffie bestellen met BREW. Deze worden (in aflopende volgorde van waarschijnlijkheid) nog steeds gebruikt, al is het soms voor wat uitgebreidere doeleinden. Een mooi voorbeeld is de website van de introductie.

Een theepot, vastgelijmd aan een netbook.
Een theepot die naar BREW luistert. (Foto van Joe Reddington, gebruikt volgens CC-BY-3.0.)

Om je voor de intro op te geven, vul je een formulier in, je klikt op een knop en dan verschijnt even later een berichtje dat je registratie gelukt is. Om dit voor elkaar te krijgen, moeten achter de schermen erg veel computers hun best doen.

Met een druk op de verstuurknop wordt het browserprogramma actief en stuurt een berichtje naar de computers van A–Eskwadraat dat begint met “POST /Leden/Intro/Aanmelden” en verder een pakketje bevat met de inhoud van het formulier.
De servercomputer ontvangt dit bericht (nadat heel wat computers heel wat dingen gedaan hebben, maar daar gaat de IBA niet over) en geeft een seintje aan WhosWho4, het programma dat achter de website zit.
Het eerste wat WhosWho4 doet, is kijken naar welke pagina het formulier is verstuurd. Het systeem Benamite bepaalt wat er met het formulier gedaan moet worden, dus welk gedeelte van het programma gestart moet worden.

Omdat het web ontwikkeld is om bestanden ergens op een schijf te publiceren, doet Benamite alsof het programma een soort virtueel bestandsysteem is van mappen en bestanden. Deze structuur wordt bewaard in de database, zodat het vrij makkelijk aan te passen is zonder alles opnieuw te programmeren. Benamite loopt dus het hele adres, op basis van de /-tekens, af en komt uiteindelijk uit op de instructie /WhosWho4/Controllers/Intro.php:Intro_Controller:externAanmelden, oftewel dat in het bestand /WhosWho4/Controllers/Intro.php van de klasse Intro_Controller de statische methode externAanmelden wordt uitgevoerd.

Terwijl de functie wordt ingeladen, maakt de server ook een berg objecten die alle relevante dingen beschrijven die betrokken zijn bij het verwerken van het formulier, zoals een Lid-object met de gegevens van de nieuwe deelnemer aan de intro en een LidVerzameling-object dat alle leden bevat om te controleren dat je je niet per ongeluk twee keer aanmeldt. Zoals het vak MSO leert, ben je niet serieus bezig zonder een echt klassendiagram, waar alle klassen en hun onderlinge relaties worden bijgehouden. Bij WhosWho4 wordt de structuur van de database en een basisversie van de klassen automatisch uit dit diagram gegenereerd. Om een echte versie van de klassen te maken, hoef je alleen maar een paar dingetjes uit te breiden.

Heel veel pastelkleurige rechthoekjes die volstaan met letters, sommige met lijnen ertussen
Een kleine greep uit het klassendiagram van WhosWho4. (Klik voor vergroting.)

Zijn alle gegevens gecontroleerd en in orde bevonden, dan kunnen we het antwoord geven. Omdat bij het inschrijvingsformulier nog wat extra code zit die op basis van dit antwoord verschillende dingen gaat doen, kunnen we in dit geval af met een heel eenvoudig antwoord: ok. Is het niet in orde, dan moeten we op de pagina tonen wat er precies misging. Pagina’s op het web zijn opgebouwd uit code in HTML. Je wilt deze code niet zelf genereren in een programma, dus WhosWho4 werkt met HTML-Objecten die al die enge code verbergen. Je begint met een HTML-Pagina, zet daar wat HTML-Paragrafen, HTML-Formulieren en HTML-Inputs in en vraagt aan die pagina om er een beetje nette code van te maken. Die code kan de server terugsturen als antwoord op de POST waar het om ging. Dit komt terecht bij de Javascriptcode die bij de pagina met formulier meegeleverd is. Het ontdekt dat je nog een iDEAL-betaling moet doen, zodat de browser een POST verstuurt aan de iDEAL-betaalpagina, en zo kan het hele proces weer van voren af aan beginnen.

Gepubliceerd door

timb

Joe'p is de voorzitter van de WebCie en denkt soms mee te kunnen praten over systeembeheer en LaTeX.

Geef een reactie