0%

Waar Python sterk in is

Bouw back-ends en API's voor het web

Je typt een notitie op een website en klikt op Save note. Even later verschijnt de notitie op het scherm.

Daarvoor waren verschillende stukken software nodig, geschreven in meer dan één taal. Slechts een deel ervan was Python. Door de notitie langs die onderdelen te volgen, wordt de meest voorkomende verwarring over Python en het web duidelijk.

Het deel dat je ziet

Een browser is het programma dat de pagina aan je toont. Chrome, Firefox, Safari of Edge.

Wat daarin aankomt, bestaat meestal uit drie onderdelen: HTML voor de structuur, zoals koppen, alinea’s, formulieren en knoppen; CSS voor het uiterlijk, zoals kleuren, afstanden en indeling; en JavaScript voor het gedrag binnen de pagina, bijvoorbeeld wat er gebeurt als je op een knop klikt. Teams schrijven vaak TypeScript en zetten dat om in JavaScript voordat de browser het ontvangt.

Python is meestal geen van die onderdelen. Hier ontstaat vaak de verwarring als mensen horen dat Python goed is voor webontwikkeling.

Als je op Save note klikt, verzamelt code in de browser wat je hebt getypt en verstuurt een verzoek: een bericht dat om informatie vraagt of vraagt om iets te laten gebeuren.

Het deel achter de pagina

Dat verzoek gaat naar een server, een andere computer die gedeeld werk doet voor iedereen die de site gebruikt. Dat kan één klein team zijn of enkele miljoenen mensen.

De server moet bepalen of je bent ingelogd, of de notitie is toegestaan en wat de regels van het product erover zeggen. Vervolgens vraagt hij een database, een systeem dat gedeelde gegevens opslaat en terugvindt, om de notitie te bewaren. Daarna geeft hij antwoord aan je browser.

Dit werk achter de zichtbare pagina is de back-end, en dat is precies het terrein van Python. Regels toepassen, met opgeslagen informatie werken, andere systemen aansturen en verschillende stappen samenvoegen tot één betrouwbaar proces: daarvoor is Python goed geschikt.

StapWaarWat er gebeurt
1BrowserHet formulier tonen en reageren op typen en klikken
2Van browser naar serverDe notitie en het verzoek van de ingelogde persoon versturen
3Python-serverHet verzoek controleren, regels toepassen en de database vragen het op te slaan
4Van server naar browserEen duidelijk resultaat terugsturen
5BrowserDe opgeslagen notitie tonen of uitleggen wat aandacht nodig heeft

Eén product, meerdere talen, omdat elke rij ander werk beschrijft. Een bruikbaar product heeft geen taal nodig die alles doet. Elke belangrijke verantwoordelijkheid moet op een geschikte plek terechtkomen.

De afspraak ertussen

Een API is een afgesproken manier waarop het ene programma het andere om informatie of een handeling vraagt. De letters staan voor application programming interface, maar de functie is belangrijker dan de naam.

De browser gebruikt een API om de Python-server te vragen je notitie op te slaan. Een telefoonapp kan dezelfde API gebruiken. Een systeem van een ander bedrijf ook. De afspraak bepaalt wat je kunt vragen, wat je moet meesturen en wat je terugkrijgt. Juist daardoor kunnen beide kanten in verschillende talen geschreven zijn en toch samenwerken.

Python heeft hiervoor frameworks: verzamelingen kant-en-klare onderdelen die verzoeken ontvangen, antwoorden versturen en regels organiseren. Django en FastAPI zijn twee voorbeelden. Je hoeft nu niet tussen die twee te kiezen. Het gaat erom dat niemand de basis van het web telkens opnieuw vanaf nul bouwt.

Aan welke kant hoort een taak?

Vraag je af wat het werk nodig heeft: het scherm voor de gebruiker, of de afgeschermde informatie en gedeelde regels op de server.

Tonen wat je typt, hoort in de browser. Deze notitie in je account opslaan zodat je haar op een ander apparaat kunt openen, vraagt om de server en zijn database. Een browser kan informatie ook lokaal opslaan, maar daardoor is die nog niet elders via je account beschikbaar. Een regel die voor elke gebruiker geldt, hoort meestal ook op de server.

Het antwoord is niet altijd zo netjes verdeeld. Een browser kan controleren of een notitie niet leeg is, zodat je direct een melding krijgt en niet hoeft te wachten. De server moet dat ook controleren, want hij kan er niet van uitgaan dat het verzoek afkomstig is van de pagina die jij zag. Dezelfde regel komt om twee verschillende redenen op beide plekken terecht. Dat is normaal, geen verspilling.

Hier sterk, niet overal

Python kan HTML maken en er bestaan hulpmiddelen waarmee het verder de browser in komt. Toch bestaat een pagina met echt ingewikkeld gedrag voor de gebruiker meestal uit HTML, CSS en JavaScript.

Op de server is Python goed geschikt voor werk met productregels, gedeelde informatie, API’s, verbindingen met andere systemen of een achtergrondtaak. Dat is werk dat doorgaat nadat de server al heeft geantwoord, zoals een groot rapport opbouwen of een e-mail versturen.

Dat maakt Python nog niet automatisch de juiste keuze voor elke organisatie. Een team kan tien jaar ervaring hebben met Java, C#, Go of Ruby. Het product kan bijzondere eisen stellen aan snelheid of hardware. De mensen en systemen die er al zijn, tellen mee in de keuze. Dat maakt Python op het web niet minder geschikt als idee. Het is gewoon onderdeel van software ontwikkelen.

Het patroon wordt zichtbaar: Python zit vaak achter het zichtbare oppervlak, waar het regels, informatie en andere systemen samenbrengt. De volgende les volgt diezelfde kracht naar een heel ander terrein.

Verder lezen (Engels)

Het officiële overzicht van Django laat zien wat een volledig webframework biedt. MDN heeft een toegankelijke inleiding in programmeren aan de serverkant. Beide zijn optioneel.