Python er en av de mest lettleste og enkle å skrive programmeringsspråk til enhver tid. Gjennom årene har populariteten til Python bare økt, og den er mye brukt i utvikling av webapplikasjoner, skripting, skape spill, vitenskapelig databehandling, osv..
Flask er et Python webapplikasjonsramme som blir stadig mer populært på grunn av sin brukervennlighet for Python-nybegynnere. I denne opplæringen tar vi en titt på EVE, et REST API-byggverk basert på Flask, MongoDB og Redis. Fra de offisielle dokumentene:
Drevet av Flask, MongoDB, Redis og gode hensikter Eve gjør det mulig å enkelt bygge og distribuere svært tilpasses, fullt utstyrt RESTful Web Service.
I denne veiledningen vil vi se hvordan du bygger REST-APIer ved hjelp av EVE-rammeverket. Ved å bruke AngularJS skal vi designe frontenden for en enkel app og gjøre den funksjonell ved å bruke REST APIene som er bygget med EVE. I denne veiledningen vil vi implementere følgende funksjonalitet:
Vi bruker pip for å installere EVE.
pip installeringsaften
Vi skal bruke MongoDB
som database. Ta en titt på de offisielle dokumentene for installasjon som per ditt system.
Opprett en prosjektmappe som heter PythonAPI
. Navigere til PythonAPI
og lag en fil som heter api.py
. Innsiden api.py
importere EVE
og opprett et EVE-objekt.
fra eve import Eve app = Eve ()
Deretter løp app
når programmet utføres som et hovedprogram.
fra eve import Eve app = Eve () hvis __name__ == '__main__': app.run ()
Kjør din MongoDB
bruker følgende kommando:
mongod - dbpath =/ Data / db /
Som du kan se, må vi spesifisere en sti for db-filene. Opprett bare data / db
i filsystemet ditt og kjør kommandoen ovenfor.
Sammen med en forekomst av MongoDB
kjører, krever EVE en konfigurasjonsfil med informasjon om API-ressursene. Så i PythonAPI
mappe opprette en annen fil som heter settings.py
og legg til følgende kode:
DOMAIN = 'bruker':
Ovennevnte kode informerer EVE om at det er en ressurs for bruker
er tilgjengelig.
Lagre alle filene og kjøre api.py
:
python api.py
APIen skal være online som vist:
Vi bruker Postman REST Client til å sende forespørsler til APIene. Det er gratis og kan installeres med et enkelt klikk. Når du er ferdig med installasjonen, start appen og skriv inn API-nettadressen (http://127.0.0.1:5000/) og klikk send. Du bør ha svaret som vist:
Siden vi ikke har ringt noen bestemt API ressurs, vil den vise alle tilgjengelige ressurser. Nå, prøv å ringe bruker
ressurs og du bør ha svaret spesifikt for bruker
.
Vi starter med å bygge en API for å opprette eller registrere en bruker for vår søknad. Brukeren vil ha visse felt som Fornavn
, Etternavn
, Brukernavn
, Passord
og Telefonnummer
.
Så først må vi definere et skjema for en bruker. Schema definerer feltene og datatyper av nøkkelfeltene. Åpne opp settings.py
og endre DOMENE
ved å definere et skjema som vist:
DOMAIN = 'bruker': 'skjema': 'fornavn': 'type': 'streng', 'etternavn': 'type': 'streng', 'brukernavn': 'type' 'streng', 'unik': True, 'passord': 'type': 'streng', 'telefon': 'type': 'streng'
Som du kan se i koden ovenfor, har vi definert nøkkelfeltene som trengs for å opprette en bruker og dens datatype definert i skjemaet. Lagre endringene og utfør api.py
. Fra Postman-klienten prøver å gjøre en POST-forespørsel sammen med de nødvendige parametrene til http://127.0.0.1/user som vist:
På POST-forespørsel til bruker, kastet den a 405 Metode ikke tillatt
feil. EVE aksepterer som standard kun GET-forespørsler. Hvis vi vil bruke en hvilken som helst annen metode, må vi definere det eksplisitt. Åpen settings.py
og definer ressursmetodene som vist:
RESOURCE_METHODS = ['GET', 'POST']
Lagre endringene og utfør api.py
. Prøv nå igjen POST
til brukeren og du bør ha det nedenstående svaret:
Som du kan se, var POST-forespørselen ovenfor vellykket. Vi har ikke definert database konfigurasjonene i vår settings.py
, så EVE fullførte forespørselen ved hjelp av løpende forekomst av MongoDB
. La oss logge inn på MongoDB
skall og se den nyopprettede posten. Med MongoDB-forekomst kjører, utløs Mongo-skallet:
mongo
En gang inne i mongo
shell, liste alle tilgjengelige databaser.
vise databaser;
Det må være en eve
database. Bytt til eve
database.
bruk eve;
Utfør vise fram
kommando for å liste tabellene inne i eve
database.
vise tabeller;
De listede tabellene må ha et bord som heter bruker
. Skriv opp postene fra bruker
bord ved hjelp av følgende kommando:
db.user.find ()
Her er de valgte postene fra brukerbordene:
Deretter oppretter vi en API for å validere en eksisterende bruker. Normalt, hvis vi gjør en få
forespørsel til brukerens sluttpunkt (http://127.0.0.1:5000/user), vil det gi ut detaljer om alle registrerte brukere fra databasen. Vi må implementere to ting her. Først må vi godkjenne en bruker ved å bruke fornavn og passord, og for det andre må vi returnere brukerdetaljer fra databasen på vellykket godkjenning.
For å få detaljer basert på fornavnet, må vi legge til et ekstra oppslagsfelt i DOMENE
i settings.py
.
'additional_lookup': 'url': 'regex ("[\ w] +")', 'felt': 'brukernavn',
Som vist i koden ovenfor har vi lagt til et oppslagsfelt for brukernavn
. Nå når en GET-forespørsel sendes til http://127.0.0.1:5000/user/
det vil returnere detaljene til brukeren med det aktuelle brukernavn
. Når vi sender en forespørsel til en bestemt bruker, sender vi også brukernavn
og passord
for godkjenning.
Vi gjør grunnleggende godkjenning for å verifisere en bestemt bruker basert på brukernavn og passord. Først må vi importere Grunnleggende Auth
klasse fra EVE. Opprett en klasse som heter Verifisere
å implementere godkjenningen som vist:
fra eve.auth importere BasicAuth klasse Authenticate (BasicAuth): def check_auth (selv, brukernavn, passord, allowed_roles, ressurs, metode):
Nå, når ressursen er bruker
og forespørselsmetoden er FÅ
, Vi vil autentisere brukeren. Ved vellykket autentisering returneres brukerens detaljer om brukeren med fornavn i API-endepunktet. Vi begrenser også brukeropprettelsen ved å gi brukernavn og passord. Så, hvis metoden er POST og API endpoint er bruker, sjekker og validerer brukernavnet og passordet. Så, her er komplett Verifisere
klasse:
class Authenticate (BasicAuth): def check_auth (selv, brukernavn, passord, allowed_roles, ressurs, metode): hvis ressurs == 'bruker' og metode == 'GET': user = app.data.driver.db ['bruker' ] bruker = user.find_one ('brukernavn': brukernavn, 'passord': passord) hvis bruker: return True annet: return False elif ressurs == 'bruker' og metode == 'POST': return brukernavn == ' admin 'og passord ==' admin 'else: return True
Vi må passere Verifisere
klassenavn mens du starter API-en. Så modifiser API-initieringskoden som vist:
hvis __name__ == '__main__': app = Eve (auth = Autentiser) app.run ()
Lagre alle endringene og utfør api.py
. Prøv å sende en grunnleggende auth-forespørsel med et brukernavn og passord fra Postman til http://127.0.0.1/user/username (erstatt brukernavn med et annet eksisterende brukernavn). Ved vellykket autentisering bør du få brukerens detaljer som svar:
For å opprette en API for Legg til element, er alt vi trenger å gjøre, å lage et nytt skjema for elementet i settings.py
.
'element': 'skjema': 'navn': 'type': 'streng', 'brukernavn': 'type': 'streng'
API-tillegget vil hjelpe hver innlogget bruker til å legge til et element. Vi lagrer elementet sammen med brukernavnet til brukeren som skrev inn varen. Lagre endringene og prøv å gjøre en POST-forespørsel til http://127.0.0.1/item som vist:
For å slette et element opprettet av en bruker, er alt vi trenger å gjøre, å ringe elementets endepunkt / ITEM_ID
. Men bare å ringe en DELETE forespørsel, vil ikke slette elementet. For å slette et element, må vi også gi en _etag
relatert til en bestemt gjenstand. En gang element id
og _etag
match, er elementet slettet fra databasen. Her er hvordan DELETE-metoden kalles i elementets sluttpunkt.
Oppdaterings-API-en ligner slettingsgrensesnittet. Alt vi trenger å gjøre er å sende en PATCH-forespørsel med element id
og _etag
og skjemafeltene som må oppdateres. Slik oppdateres varenes detaljer:
I denne veiledningen så vi hvordan du kommer i gang med å lage APIer ved hjelp av Python EVE-rammen. Vi opprettet noen grunnleggende APIer for CRUD-operasjoner som vi skal bruke i neste del av serien mens du oppretter en AngularJS-app.
Kildekode fra denne opplæringen er tilgjengelig på GitHub.
Gi oss beskjed om dine tanker i kommentarene nedenfor!