Costruire API REST utilizzando EVE

Python è uno dei linguaggi di programmazione più facili da leggere e facili da scrivere di tutti i tempi. Nel corso degli anni, la popolarità di Python è aumentata solo ed è ampiamente utilizzata nello sviluppo di applicazioni web, nella creazione di script, nella creazione di giochi, nell'elaborazione scientifica, ecc..

Flask è un framework per applicazioni web Python che sta guadagnando popolarità grazie alla sua facilità d'uso per i principianti di Python. In questo tutorial, daremo un'occhiata a EVE, un framework di costruzione API REST basato su Flask, MongoDB e Redis. Dai documenti ufficiali:

Gestito da Flask, MongoDB, Redis e buone intenzioni, Eve consente di creare e implementare facilmente un servizio Web RESTful altamente personalizzabile e completo.

Cosa creeremo

In questo tutorial, vedremo come creare API REST utilizzando il framework EVE. Successivamente, utilizzando AngularJS, progetteremo il front-end per una semplice app e renderla funzionale consumando le API REST create utilizzando EVE. In questo tutorial, implementeremo le seguenti funzionalità:

  • Crea API utente
  • Convalida l'API utente
  • Aggiungi elementi API
  • Elimina elementi API
  • Aggiorna elementi API

Iniziare

Installazione

Useremo pip per installare EVE.

pip installare la vigilia

Useremo MongoDB come database. Dai un'occhiata ai documenti ufficiali per l'installazione secondo il tuo sistema.

Creazione dell'API di base

Creare una cartella di progetto chiamata PythonAPI. Navigare verso PythonAPI e creare un file chiamato api.py. Dentro api.py importare VIGILIA e creare un oggetto EVE.

da eve import Eve app = Eve ()

Quindi, corri App quando il programma viene eseguito come programma principale.

da eve import Eve app = Eve () se __name__ == '__main__': app.run ()

Esegui il tuo MongoDB usando il seguente comando:

mongod --dbpath =  / Data / db /

Come puoi vedere, dobbiamo specificare un percorso per i file db. Crea semplicemente Dati / db nel tuo file system ed esegui il comando precedente.

Insieme a un'istanza di MongoDB in esecuzione, EVE richiede un file di configurazione con informazioni sulle risorse dell'API. Quindi nel PythonAPI cartella crea un altro file chiamato settings.py e aggiungi il seguente codice:

DOMAIN = 'utente': 

Il codice sopra informa EVE che una risorsa per utente è disponibile.

Salva tutti i file ed esegui api.py:

python api.py

L'API dovrebbe essere online come mostrato:

Utilizzeremo il client Postman REST per inviare richieste alle API. È gratuito e può essere installato con un semplice clic. Una volta completata l'installazione, avvia l'app e inserisci l'URL dell'API (http:/12/12.0.0.1:5000/) e fai clic su Invia. Dovresti avere la risposta come mostrato:

Poiché non abbiamo chiamato alcuna risorsa API specifica, mostreremo tutte le risorse disponibili. Ora prova a chiamare il utente risorsa e dovresti avere la risposta specifica al utente.

Crea e convalida l'API utente

Crea API utente

Inizieremo creando un'API per creare o registrare un utente per la nostra applicazione. L'utente avrebbe alcuni campi come Nome di battesimo, Cognome, Nome utente , Parola d'ordine e Numero di telefono.

Quindi prima dovremo definire uno schema per un utente. Lo schema definisce i campi e i tipi di dati dei campi chiave. Aprire settings.py e modificare il DOMINIO definendo uno schema come mostrato:

DOMAIN = 'utente': 'schema': 'firstname': 'type': 'string', 'lastname': 'type': 'string', 'username': 'type': 'string', 'unique': True, 'password': 'type': 'string', 'phone': 'type': 'string'

Come puoi vedere nel codice precedente, abbiamo definito i campi chiave che sono necessari per creare un utente e il suo tipo di dati definito nello schema. Salva le modifiche ed esegui api.py. Da Postman Client prova a fare una richiesta POST insieme con i parametri richiesti a http://127.0.0.1/user come mostrato:

Su richiesta POST all'utente, ha gettato un Metodo 405 non consentito errore. Di default EVE accetta solo richieste GET. Se vogliamo utilizzare qualsiasi altro metodo, dobbiamo definirlo esplicitamente. Aperto settings.py e definire i metodi di risorse come mostrato:

RESOURCE_METHODS = ['GET', 'POST']

Salva le modifiche ed esegui api.py. Ora prova di nuovo a INVIARE all'utente e dovresti avere la risposta seguente:

Come puoi vedere, la richiesta POST sopra riportata è andata a buon fine. Non abbiamo definito le configurazioni del database nel nostro settings.py, quindi EVE ha completato la richiesta utilizzando l'istanza in esecuzione di MongoDB. Accedere al MongoDB shell e vedi il record appena creato. Con l'istanza di MongoDB in esecuzione, attiva la shell di mongo:

mongo

Una volta dentro il mongo shell, elenca tutti i database disponibili.

mostra i database;

Ci deve essere un vigilia Banca dati. Passare al vigilia Banca dati.

usa Eva;

Esegui il mostrare comando per elencare le tabelle all'interno di vigilia Banca dati.

mostra tabelle;

Le tabelle elencate devono avere una tabella chiamata utente. Elencare i record dal utente tabella usando il seguente comando:

db.user.find ()

Ecco i record selezionati dalle tabelle utente:

Convalida l'API utente

Successivamente creeremo un'API per convalidare un utente esistente. Normalmente, se facciamo a ottenere richiesta all'endpoint dell'utente (http://127.0.0.1:5000/user), fornirà i dettagli di tutti gli utenti registrati dal database. Dobbiamo implementare due cose qui. Per prima cosa dobbiamo autenticare un utente usando il nome e la password e in secondo luogo dobbiamo restituire i dettagli dell'utente dal database in caso di autenticazione avvenuta con successo.

Per ottenere dettagli in base al nome, è necessario aggiungere un campo di ricerca aggiuntivo in DOMINIO nel settings.py.

'additional_lookup': 'url': 'regex ("[\ w] +")', 'field': 'username',

Come visto nel codice precedente, abbiamo aggiunto un campo di ricerca per nome utente. Ora quando una richiesta GET viene inviata al http://127.0.0.1:5000/user/ restituirà i dettagli dell'utente con il particolare nome utente. Quando effettui una richiesta a un particolare utente, invieremo anche il nome utente e parola d'ordine per l'autenticazione.

Effettueremo l'autenticazione di base per verificare un particolare utente in base a nome utente e password. Per prima cosa, dobbiamo importare il Autentica di base classe da EVE. Crea una classe chiamata Autenticare per implementare l'autenticazione come mostrato:

da eve.auth import BasicAuth class Authenticate (BasicAuth): def check_auth (self, nome utente, password, allowed_roles, resource, method): 

Ora, quando la risorsa è utente e il metodo di richiesta è OTTENERE, autenticeremo l'utente. In caso di autenticazione riuscita, verranno restituiti i dettagli dell'utente dell'utente con nome nell'endpoint API. Limiteremo anche la creazione degli utenti fornendo un nome utente e una password. Quindi, se il metodo è POST e l'endpoint API è utente, controlleremo e convalideremo il nome utente e la password. Quindi, ecco il completo Autenticare classe:

class Authenticate (BasicAuth): def check_auth (self, username, password, allowed_roles, resource, method): se resource == 'user' e metodo == 'GET': user = app.data.driver.db ['user' ] user = user.find_one ('username': username, 'password': password) se utente: return True else: return False elif resource == 'utente' e metodo == 'POST': return username == ' admin 'and password ==' admin 'else: restituisce True

Dobbiamo passare il Autenticare nome della classe durante l'avvio dell'API. Quindi modifica il codice di avvio dell'API come mostrato:

se __name__ == '__main__': app = Eve (auth = Authenticate) app.run ()

Salva tutte le modifiche ed esegui il api.py. Prova a inviare una richiesta di autorizzazione di base con nome utente e password da Postman a http://127.0.0.1/user/nomeutente (sostituisci nome utente con qualsiasi altro nome utente esistente). In caso di autenticazione riuscita, dovresti ottenere i dettagli dell'utente in risposta come mostrato:

Aggiungi, Elimina e Aggiorna articoli 

Aggiungi elemento API

Per creare un'API Aggiungi elemento, tutto ciò che dobbiamo fare è creare un nuovo schema per l'elemento in settings.py.

'item': 'schema': 'name': 'type': 'string', 'username': 'type': 'string'

L'API Aggiungi elemento aiuterebbe ogni utente connesso a aggiungere un elemento. Salveremo l'oggetto insieme al nome utente dell'utente che ha inserito l'oggetto. Salva le modifiche e prova a fare una richiesta POST a http://127.0.0.1/item come mostrato:

Elimina elemento API

Per eliminare un elemento creato da un utente, tutto ciò che dobbiamo fare è chiamare l'endpoint dell'oggetto /numero identificativo dell'oggetto. Ma semplicemente chiamando una richiesta DELETE non cancellerà l'oggetto. Per eliminare un oggetto, dobbiamo anche fornire un _etag relativo a un particolare oggetto. Una volta numero identificativo dell'oggetto e _etag corrisponde, l'elemento viene eliminato dal database. Ecco come viene chiamato il metodo DELETE nell'oggetto endpoint.

Aggiorna elemento API

L'API di aggiornamento è simile all'API di cancellazione. Tutto quello che dobbiamo fare è inviare una richiesta PATCH con il numero identificativo dell'oggetto e _etag e i campi del modulo che devono essere aggiornati. Ecco come vengono aggiornati i dettagli dell'elemento:

Conclusione

In questo tutorial, abbiamo visto come iniziare a creare API utilizzando il framework EVE Python. Abbiamo creato alcune API di base per le operazioni CRUD che utilizzeremo nella parte successiva della serie durante la creazione di un'app AngularJS.

Il codice sorgente di questo tutorial è disponibile su GitHub.

Fateci sapere i vostri pensieri nei commenti qui sotto!