flask api tutorial with example extending flask with apis
In deze Flask API-zelfstudie worden populaire Flask-extensies zoals Flask twitter Oembedder, Flask API en Flask RESTful uitgelegd met voorbeelden:
Het Flask-framework heeft een behoorlijk groot aantal extensies. Deze extensies zijn best handig en zijn gemakkelijk te ontwikkelen. We weten dat het Flask-framework erg pythonisch is en een minimale set API's heeft, en zeer flexibel is, daarom heeft de Flask-gemeenschap zoveel extensies gemaakt voor veel specifieke taken.
Als onderdeel van de Flask-tutorialserie bevat deze tutorial een voorbeeld van een paar Flask-uitbreidingen. We zullen de volgende uitbreidingen bespreken.
- Flask twitter Oembedder
- Kolf API
- Kolf RESTful
Bezoek hier om Flask From Scratch te leren
Hoewel we veel extensies hebben besproken als onderdeel van onze vorige tutorials, legt deze tutorial meer uit met het perspectief van het onderzoeken van de componenten van een Flask-extensie.
Wat je leert:
Wat is een kolfuitbreiding
Een flask-extensie is een installeerbare Python-module of een pakket dat extra functionaliteit implementeert in een Flask-applicatie. Een Flask-extensie kan net zo eenvoudig zijn als degene die ondersteuning toevoegt voor het gebruik van een externe API zoals Twitter om een tweet op een webpagina in te sluiten.
Of een Flask-extensie kan een nieuw framework zijn, zoals Flask API of Flask-RESTful om apps te bouwen die een architectonisch patroon of een ontwikkelingsparadigma volgen.
Flask twitter Oembedder
In deze sectie nemen we het voorbeeld van een bestaand open-source eenvoudig project van hier
Kloon dit project op uw lokale computer en installeer het met pip met behulp van de onderstaande opdracht.
Deze extensie helpt bij het insluiten van een Tweet met behulp van een Jinja2-sjabloontag. Om deze extensie te gebruiken, moet u echter een ontwikkelaarsaccount bij Twitter aanvragen. Zodra u een ontwikkelaarsaccount heeft, maakt u een app en krijgt u sleutels en geheimen om de API van Twitter te gebruiken.
toevoegen aan een array in java
Als je eenmaal de sleutels en geheimen hebt, bewaar ze dan op een veilige plaats zodat de applicatie er toegang toe heeft. We hebben die in de omgevingsvariabelen bewaard en toegevoegd aan de Flask-app-configuratie, zoals hieronder weergegeven. Onze demo-app bewaart de configuratiewaarden in het config.py-bestand.
We halen de waarden van de vereiste variabelen uit de omgevingsvariabelen. Als de bijbehorende waarde niet aanwezig is in de omgevingsvariabele, wordt die opgeslagen als Geen.
Nadat u de bovenstaande regels aan het configuratiebestand heeft toegevoegd, gaat u naar de __init__.py van de Flask-applicatie en initialiseert u deze door deze te wijzigen, zoals hieronder wordt weergegeven.
Deze regels initialiseren de Flask-extensie. Nu kunnen we hello.html aanpassen onder sjablonen en de onderstaande tag toevoegen zoals hieronder getoond.
We hebben deze tag toegevoegd vóór de for-lus in de bestaande sjabloon. Dat zeer lange cijfer is de tweet-id. We krijgen deze ID van de Tweet-URL na tweeten. Nadat we het sjabloonbestand hebben opgeslagen, navigeren we naar het / hallo / greetings-eindpunt en ontvangen de resultaten, zoals weergegeven in de onderstaande afbeelding.

Kolf RESTful
Onze Flask RESTful-voorbeeldtoepassing is degene die de beperkingen van de REST-architectuur respecteert. Het is echter niet als een protocol en de ontwikkelaars zijn flexibel bij het implementeren van functies, volgens de REST-beperkingen.
Lees meer over de beperkingen van de REST-architectuur hier
Moderne webapplicaties stellen klanten in staat om de bronnen op een staatloze manier op gemakkelijk te lezen en stabiele eindpunten op te vragen.
Flask RESTful Voorbeeld
Laten we enkele functies ook op een RESTful-manier implementeren in onze Flask RESTful-voorbeeldtoepassing.
We hebben een manier om gegevens met betrekking tot albums en nummers op te slaan en weer te geven. Laten we een API implementeren met de Flask RESTful-extensie.
Installeer eerst Flask RESTful met behulp van de onderstaande opdracht.
Laten we voor eenvoudig onderhoud en begrip een bestand met de naam api.py maken in de app-directory en de volgende regels code erin vermelden. Overweeg voorlopig API's die vergelijkbaar zijn met Flask Views.
We gaan functies implementeren die overeenkomen met HTTP-werkwoorden om te reageren wanneer de client een verzoek verzendt naar het server-eindpunt van de applicatie.
We hebben twee bronnen met de naam Songs en Song gemaakt door de abstracte klasse van de bron Flask-RESTful te subclassificeren. De klasse met de naam Songs heeft twee methoden 'get en post' die overeenkomen met de twee HTTP-werkwoorden; GET en POST, respectievelijk.
De Songs-bron bedient alle nummers naar het geregistreerde eindpunt wanneer de klant daarom vraagt en voegt een nummer toe aan de lijst met bestaande nummers wanneer de gegevens op hetzelfde eindpunt worden gepost.
Evenzo worden in het geval van de klassen Song, HTTP GET, DELETE en PUT geïmplementeerd met behulp van de methoden get, delete en put. Method get stuurt een antwoord met de gevraagde song als JSON, method delete verwijdert een song uit SONGS, en de put-methode werkt een bestaande song in SONGS bij.
Laten we deze bronnen nu aan onze voorbeeldtoepassing toevoegen door ze te initialiseren in het __init__.py-bestand onder de app-map.
Laten we curl installeren en de functies op de vermelde eindpunten proberen.
Haal alle nummers op
We krijgen de reactie, zoals hieronder weergegeven.
Laten we nu de onderstaande opdracht gebruiken om een nummer toe te voegen.
We krijgen de reactie van onze API, zoals hieronder weergegeven.
Nogmaals, als we de lijst met nummers opvragen zoals we deden in het vorige commando, en we zullen beide nummers in het antwoord krijgen.
Evenzo werken HTTP DELETE en PUT zoals bedoeld. Laten we een paar tests toevoegen voor de versie v1 van deze eenvoudige API die we hebben gemaakt.
Voer deze tests nu uit vanaf de opdrachtregel, zoals hieronder wordt weergegeven.
Evenzo kunnen we tests schrijven voor andere methoden voor meer dekking.
Een belangrijk ding om op te merken is dat de nummers die we hebben toegevoegd, blijven bestaan als onderdeel van het enkele proces waaronder de ontwikkelingsserver draait. Dit betekent dat alle nieuwe gegevens verloren gaan zodra het proces wordt afgesloten.
Bovendien lijkt de taak om versie v1 van de API te maken overbodig, en het is anders dan de manier waarop we gegevens in de applicatie hebben opgeslagen met behulp van formulieren en views.
Gewoonlijk vereist RESTful API-implementatie het verkrijgen van gegevens van de clients, het rangschikken tussen client- en serveruiteinden en persistentie met behulp van databasemodellen die we hebben gemaakt.
Bovendien zijn de eindpunten beveiligd tegen onbedoelde en vervaardigde invoer.
Daarom raden we aan dat de bovenstaande voorbeelden alleen bedoeld zijn voor het leren van de concepten en de beperkingen van de REST-architectuur met behulp van HTTP-methoden. Houd er rekening mee dat dit slechts een van de vele manieren is waarop webservices in het algemeen worden gemaakt. Bovendien zijn er veel manieren waarop REST-architectuur kan worden geïmplementeerd.
We moedigen lezers aan om verder te onderzoeken hoe REST verschillende bestandsindelingen en aangepaste methoden kan hebben met behulp van andere protocollen en niet alleen JSON en HTTP. Om een glimp op te vangen van één productiegebruik, geven we het onderstaande voorbeeld.
We gebruiken een Flask-Appbuilder BaseApi om vergelijkbare functies onder verschillende eindpunten te implementeren. Open het api.py-bestand en werk het bij met de onderstaande code.
java waarden toevoegen aan een array
Laten we nu nog wat tests toevoegen om de eindpunten te testen die zijn gebouwd met de Flask-Appbuilder. We zullen deze tests uitvoeren met PyTest.
Flask-Appbuilder helpt ook bij het verstrekken van de Swagger-gebruikersinterface om de gepubliceerde API weer te geven en uit te proberen. Open config.py en update het met de onderstaande configuratie.
Navigeer nu naar de https: // localhost: 8080 / swaggerview / v1 en je zult de Swagger-weergave kunnen zien zoals hieronder getoond.

Laten we nu API's maken voor de bestaande databasemodellen die we hebben. We moeten de ModelApi van de Flask-Appbuilder gebruiken.
Werk het api.py-bestand bij met de volgende regels code.
Nadat we een klasse hebben gedefinieerd op basis van ModelRestApi, moeten we deze opnieuw registreren bij de Flask-Appbuilder met behulp van de methode add_api.
Navigeer nu naar de Swagger-gebruikersinterface zoals eerder, en u ziet een API-verwijzing die lijkt op de onderstaande.

U kunt de API uitproberen vanuit de Swagger-weergave of door de curl naar de eindpunten te sturen zoals eerder.
Kolf API
Flask API is een framework dat veel lijkt op het Django REST-framework. U hebt toegang tot de Flask API-documentatie hier Het is de drop-in vervanging voor het Flask-frame.
We kunnen elk van de hierboven gegeven voorbeelden kiezen om de Flask REST API-gestuurde functies in onze applicatie te implementeren.
Laten we nu de broncode vastleggen en de wijzigingen in de oorspronkelijke opslagplaats publiceren met Git. Zodra we ons committeren aan de oorsprong met de branch name en een pull request sturen, zullen de unit tests automatisch geactiveerd worden onder de Git Actions als onderdeel van de pull request checks.
Fles RestPlus
Flask RestPlus is nog een Flask-extensie die helpt bij het maken van REST API met Flask. Dit project is gesplitst in een andere extensie genaamd Flask-RESTX en wordt niet langer onderhouden.
Dit project heeft een goede verzameling decorateurs om de API's te beschrijven en geeft de documentatie weer met Swagger. U kunt de details van dit project bekijken hier
Veel Gestelde Vragen
V # 1) Hoe maak ik een REST API met Flask?
Antwoord: We kunnen het Flask-framework gebruiken met andere Flask-extensies zoals Flask-RESTful, Flask API, Flask RESTX, Connexion, etc. om op REST API gebaseerde webapplicaties te maken. De meeste extensies werken met de andere ingebouwde functies van het Flask-framework en alle andere bestaande ORM / bibliotheken.
Q # 2) Wat is een REST API-voorbeeld?
Antwoord: In deze tutorial wordt een voorbeeldtoepassing gegeven die de RESTFul API implementeert. Flask-RESTful is gebruikt om de voorbeeldtoepassing te maken. Lees meer over de Flask RESTful-voorbeeldsectie in deze tutorial.
V # 3) Waar is RESTful API voor?
Antwoord: Een Application Programming Interface die over het algemeen HTTP-verzoeken gebruikt en overeenkomstige backend-methoden heeft voor HTTP-werkwoorden zoals GET, POST, PUT, etc. om communicatie tussen Client en Server mogelijk te maken, wordt een RESTful API genoemd.
hoe .torrent-bestanden te spelen
Zo'n applicatie volgt de REST-architectuurprincipes en -beperkingen om de functies ervan te implementeren.
Gevolgtrekking
We hebben de concepten van Flask-extensies behandeld met behulp van drie extensies, zoals Flask-twitter-oembedder, Flask API en Flask-RESTful.
Met behulp van de Flask-twitter-oembedder hebben we ook de concepten van Twitter API besproken. In het algemeen hebben we ook de ideeën opgenomen voor het implementeren van een RESTful-webservice, die de REST-architectuurprincipes en -beperkingen volgt.
In onze volgende tutorial zullen we de vergelijking tussen Django en Flask-framework behandelen om onze lezers te helpen de sterke en zwakke punten van beide frameworks te begrijpen. Het zal ook helpen bij het kiezen van het ene raamwerk tegen het andere op basis van de specifieke projectvereisten.
Ontdek hier de Simple Flask-trainingsserie
Aanbevolen literatuur
- Zelfstudie over API-testen: een complete gids voor beginners
- Rest API-zelfstudie: REST API-architectuur en beperkingen
- Parasoft SOAtest-zelfstudie: scriptloze API-testtool
- Hoe API-documentatie te maken in Postman?
- GitHub REST API-zelfstudie - REST API-ondersteuning in GitHub
- Hoe Postman te gebruiken voor het testen van verschillende API-indelingen?
- POSTMAN-zelfstudie: API-testen met POSTMAN
- Top 31 populaire Python Flask-interviewvragen met antwoorden