Python este una dintre cele mai ușor de citit și ușor de scris limbaje de programare ale tuturor timpurilor. De-a lungul anilor, popularitatea Python a crescut doar și este folosită pe scară largă în dezvoltarea de aplicații web, scripting, crearea de jocuri, computerizarea științifică etc..
Flask este un cadru de aplicații web Python, care câștigă popularitate datorită ușurinței sale de utilizare pentru începătorii Python. În acest tutorial, vom avea o privire la EVE, un cadru de construcție API REST bazat pe Flask, MongoDB și Redis. Din documentele oficiale:
Powered by Flack, MongoDB, Redis și intenții bune Eve permite să construiască și să instaleze fără efort servicii RESTful Web Service.
În acest tutorial, vom vedea cum să construim API-uri REST utilizând cadrul EVE. Apoi, folosind AngularJS, vom proiecta frontul pentru o aplicație simplă și îl vom face funcțional consumând API-urile REST construite folosind EVE. În acest tutorial, vom implementa următoarele funcționalități:
Vom folosi pip pentru a instala EVE.
pip instalare eve
Vom folosi MongoDB
ca bază de date. Aruncați o privire la documentele oficiale pentru instalare ca pe sistemul dvs..
Creați un director de proiect numit PythonAPI
. Navigheaza catre PythonAPI
și creați un fișier numit api.py
. Interior api.py
import AJUN
și să creați un obiect EVE.
din eve import Eve app = Eve ()
În continuare, fugiți aplicaţia
când programul este executat ca un program principal.
din eve import Eve app = Eve () dacă __name__ == '__main__': app.run ()
Rulați-vă MongoDB
utilizând următoarea comandă:
mongod --dbpath =/ Date / db /
După cum puteți vedea, trebuie să specificăm o cale pentru fișierele db. Pur și simplu creați date / db
în sistemul de fișiere și executați comanda de mai sus.
Împreună cu un exemplu de MongoDB
care rulează, EVE necesită un fișier de configurare cu informații despre resursele API. Deci, în PythonAPI
folderul crea un alt fișier numit settings.py
și adăugați următorul cod:
DOMAIN = 'user':
Codul de mai sus informează EVE că o resursă pentru utilizator
este disponibil.
Salvați toate fișierele și executați api.py
:
python api.py
API-ul ar trebui să fie online așa cum este arătat:
Vom utiliza Clientul Postman REST pentru a trimite solicitări către API. Este gratuit și poate fi instalat cu un simplu clic. După ce ați terminat instalarea, lansați aplicația și introduceți adresa URL API (http://127.0.0.1:5000/) și faceți clic pe trimiteți. Ar trebui să aveți răspunsul așa cum este arătat:
Deoarece nu am apelat la nicio resursă API specifică, aceasta va afișa toate resursele disponibile. Acum, încercați să apelați utilizator
resursă și ar trebui să aveți răspunsul specific la utilizator
.
Vom începe prin a construi un API pentru a crea sau a înregistra un utilizator pentru aplicația noastră. Utilizatorul ar avea anumite domenii cum ar fi Nume
, Numele de familie
, Nume de utilizator
, Parola
și Numar de telefon
.
Deci, mai întâi va trebui să definim o schemă pentru un utilizator. Schema definește câmpurile și tipurile de date ale câmpurilor cheie. Deschide settings.py
și modificați DOMENIU
definind o schemă după cum se arată:
DOMAIN = 'user': 'schema': 'primul nume': 'type': 'string', 'lastname': 'type': 'string' "string", "unic": adevărat, "parolă": 'tip': 'string', 'telefon': 'type': 'string'
După cum puteți vedea în codul de mai sus, am definit câmpurile cheie care sunt necesare pentru a crea un utilizator și tipul de date definit în schemă. Salvați modificările și executați api.py
. Din clientul Postman încercați să faceți o solicitare POST împreună cu parametrii necesari pentru http://127.0.0.1/user așa cum se arată:
La solicitarea POST către utilizator, a aruncat o Metoda 405 nu este permisă
eroare. În mod implicit, EVE acceptă numai cererile GET. Dacă vrem să folosim orice altă metodă, trebuie să o definim în mod explicit. Deschis settings.py
și definiți metodele de resursă după cum se arată:
RESOURCE_METHODS = ['GET', 'POST']
Salvați modificările și executați api.py
. Acum încearcă din nou POST
la utilizator și ar trebui să aveți răspunsul de mai jos:
După cum puteți vedea cererea POST de mai sus a avut succes. Nu am definit configurațiile bazei de date în site-ul nostru settings.py
, astfel încât EVE a completat cererea folosind instanța de executare a MongoDB
. Să ne conectăm la MongoDB
shell și vedeți înregistrarea nou creată. Cu instanța MongoDB care rulează, declanșează shell-ul mongo:
Mongo
Odată intrat în Mongo
shell, lista tuturor bazelor de date disponibile.
arata baze de date;
Trebuie să existe ajun
Bază de date. Treceți la ajun
Bază de date.
folosirea evei;
Executați spectacol
comanda pentru a lista tabelele din interiorul ajun
Bază de date.
afișarea tabelelor;
Tabelele listate trebuie să aibă un tabel numit utilizator
. Listează înregistrările din utilizator
tabel utilizând următoarea comandă:
db.user.find ()
Iată înregistrările selectate din tabelele utilizatorilor:
Apoi vom crea un API pentru a valida un utilizator existent. În mod normal, dacă o facem obține
solicitați utilizatorului endpoint (http://127.0.0.1:5000/user), acesta va oferi detalii despre toți utilizatorii înregistrați din baza de date. Trebuie să implementăm două lucruri aici. Mai întâi trebuie să autentificăm un utilizator care utilizează numele și parola și, în al doilea rând, trebuie să returnez detaliile utilizatorului din baza de date cu autentificare reușită.
Pentru a obține detalii pe baza primului nume, trebuie să adăugăm un câmp de căutare suplimentar în DOMENIU
în settings.py
.
'additional_lookup': 'url': 'regex ("[\ w] +")', 'domeniu': 'username',
După cum se vede în codul de mai sus, am adăugat un câmp de căutare pentru nume de utilizator
. Acum când o solicitare GET este trimisă la http://127.0.0.1:5000/user/
acesta va returna detaliile utilizatorului cu particularul nume de utilizator
. Când faceți o solicitare unui anumit utilizator, vom trimite și el nume de utilizator
și parola
pentru autentificare.
Vom face autentificare de bază pentru a verifica un anumit utilizator bazat pe numele de utilizator și parola. În primul rând, trebuie să importăm De bază Auth
clasa de la EVE. Creați o clasă numită Autentifica
pentru a implementa autentificarea după cum se arată:
de la eve.auth importă clasa BasicAuth Authenticate (BasicAuth): def check_auth (auto, nume de utilizator, parolă, permis_roles, resursă, metodă):
Acum, când este resursa utilizator
și metoda de cerere este OBȚINE
, vom autentifica utilizatorul. În cazul autentificării cu succes, detaliile utilizatorului cu numele de primire în punctul final al API vor fi returnate. De asemenea, vom restricționa crearea de utilizatori prin furnizarea unui nume de utilizator și a unei parole. Deci, dacă metoda este POST și punctul final API este utilizatorul, vom verifica și valida numele de utilizator și parola. Deci, aici este completă Autentifica
clasă:
(de exemplu, user_name, parola, permis_roles, resursă, metodă): if resource == 'user' și method == 'GET': user = app.data.driver.db [ ] user = user.find_one ('username': username, 'password': parola) if user: return Altfel adevărat: return false resource elif == user & method == 'POST' admin 'și parola ==' admin 'altceva: return True
Trebuie să trecem Autentifica
nume de clasă în timp ce inițiați API-ul. Modificați astfel codul de inițiere API după cum se arată:
dacă __name__ == '__main__': app = Eve (auth = Authenticate) app.run ()
Salvați toate modificările și executați api.py
. Încearcă să trimiți o solicitare de auth de bază cu un nume de utilizator și o parolă de la Postman la http://127.0.0.1/user/username (înlocuiți numele de utilizator cu orice alt nume de utilizator existent). La autentificarea cu succes, trebuie să obțineți detaliile utilizatorului în răspuns, după cum se arată:
Pentru a crea un API pentru elementul Adăugare, tot ce trebuie să faceți este să creați o schemă nouă pentru elementul în settings.py
.
'element': 'schema': 'nume': 'tip': 'string', 'username': 'type': 'string'
API-ul Adăugare element ar ajuta fiecare utilizator conectat să adauge un element. Vom salva articolul împreună cu numele de utilizator al utilizatorului care a introdus elementul. Salvați modificările și încercați să faceți o solicitare POST pentru http://127.0.0.1/item după cum se arată:
Pentru a șterge un element creat de un utilizator, tot ce trebuie să faceți este să apelați punctul final al elementului /ID-ul itemului
. Însă simpla chemare a unei solicitări DELETE nu va șterge elementul. Pentru a șterge un element, trebuie să furnizăm și un _etag
legate de un anumit element. O singura data ID-ul itemului
și _etag
, elementul este șters din baza de date. Iată cum se numește metoda DELETE în punctul final al elementului.
API-ul de actualizare este similar cu API-ul de ștergere. Tot ce trebuie sa facem este sa trimitem o cerere PATCH cu ID-ul itemului
și _etag
și câmpurile de formular care trebuie să fie actualizate. Iată cum se actualizează detaliile articolului:
În acest tutorial, am văzut cum să începeți să creați API-uri utilizând cadrul Python EVE. Am creat câteva API-uri de bază pentru operațiile CRUD pe care le vom folosi în următoarea parte a seriei, creând în același timp o aplicație AngularJS.
Codul sursă din acest tutorial este disponibil pe GitHub.
Spuneți-ne gândurile dvs. în comentariile de mai jos!