Construirea API-urilor REST folosind EVE

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.

Ce vom crea

Î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:

  • Creați API utilizator
  • Validați API-ul utilizatorului
  • Adăugați elemente API
  • Sterge API-urile pentru elemente
  • API pentru elemente de actualizare

Noțiuni de bază

Instalare

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..

Crearea API-ului de bază

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.

Creați și validați API-ul utilizatorului

Creați API 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:

Validați API-ul utilizatorului

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ă:

Adăugați, ștergeți și actualizați elementele 

Adăugați API pentru element

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ă:

Șterge API pentru element

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.

Actualizați API element

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:

Concluzie

Î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!

Cod