Python

Leestijd: 2 Minuten

Dit jaar wil ik elke maand iets maken. Een stuk code, een soldeer project, iets in de tuin of huis. Het doel is om het af te krijgen in die maand en daar de focus op te leggen. Afgelopen maand ben ik bezig geweest mijn Python skills verder uit te breiden. Wat ik graag wou ik een REST API maken waar je een postcode mee kan raadplegen. Bijvoorbeeld een GET naar /api/v1/zipcode/1011PN/1 geeft als resultaat het telefoon nummer en verdere informatie over dat postcode. En de beveiliging moest gedaan worden door middel val een key wat je mee gaf in de header.

Voordat ik kon beginnen heb ik onderzoek gedaan hoe ik het ging maken. Python heeft vele frameworks wat dit voor je kan doen. Op de vraag welke framework het beste is kan ik je geen antwoord geven maar welke spreekt mij het meest aan, En past het meest bij mijn wensen. Één van mijn eisen was een API key mee sturen in de header in plaats van wat je veel ziet een username en password meesturen.

Uiteindelijk ben ik gegaan voor het framework FLASK, mede door de decorators hoe je een REST functie kan definiëren.

Het zoeken naar hoe je een API key meestuurt in je header kwam steeds uit op de volgende website. Maar zo wou ik het niet, deze persoon misbruikt het username en password veld om een API key mee te sturen. Hoe ik dat deel zelf heb gemaakt lees je hieronder.

Door de decorator @auth.login_required toe te voegen aan je functie wordt er gekeken of je de header Authorization hebt gedefinieerd. Mocht dit niet zo zijn dan wordt er een error getriggerd.

Wanneer deze header er wel is wordt de authenticate callback aangeroepen.

Deze callbacks definieer je in je applicatie zelf. In onderstaande voorbeeld haal ik de token/key uit een MySQL database.

Zie mijn Github voor de volledige code;

Koop knop
ATtiny programmer