Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

REST API

Interagire con un database NoSQL basato su OrientDB tramite l'utilizzo delle API REST supportate nativamente da questo DBMS.
Interagire con un database NoSQL basato su OrientDB tramite l'utilizzo delle API REST supportate nativamente da questo DBMS.
Link copiato negli appunti

Oltre alle API viste nelle lezioni precedenti, OrientDB permette l'utilizzo di API REST, che sfruttano il formato JSON per lo scambio dei dati. Tale caratteristica offre l'opportunità di interagire con il DBMS mediante qualsiasi tecnologia che sia in grado di trattare il protocollo HTTP. In questa lezione, le sperimenteremo senza l'intermediazione di alcun linguaggio di programmazione, ma solo tramite un client disponibile come estensione del browser Chrome, Postman, ideale per i test. Per comprendere appieno la lezione, occorre
una minima conoscenza della metodologia REST.

Essenzialmente, si tratterà di inviare richieste HTTP specificando il metodo del protocollo più adatto all'operazione da svolgere: GET per effettuare una lettura, POST per l'inserimento di dati, PUT per la modifica e DELETE per la cancellazione. Alla richiesta, potranno essere allegate informazioni da fornire al DBMS, ove necessarie, mentre l'URL contattato indicherà la risorsa cui fare accesso. Leggeremo infine la risposta del server in formato JSON notando, in primis, il codice di ritorno che ci confermerà o meno la buona riuscita dell'operazione. Si ricordi a tal proposito che i codici di risposta HTTP sono numeri di tre cifre: se la prima è 2 indica un'attività svolta con successo, se è pari a 4 rileva un errore del client, se il codice inizia con 5 segnala tipicamente un errore interno al server.

Supporremo, negli esempi che seguiranno, di avere a disposizione un'istanza funzionante ed in esecuzione di OrientDB all'indirizzo http://192.168.1.100, già contenente un database di nome nuovodb. Per riprodurre, gli esempi sui propri sistemi sarà pertanto necessario sostituire negli URL questi dati con quelli opportuni.

Connessione e disconnessione

Le attività di lavoro vanno inquadrate in una sessione per la quale si può richiedere l'apertura della connessione e la disconnessione. Entrambe le richieste sfruttano il metodo GET:

  • la connessione al database nuovodb si potrà attuare nella seguente maniera:
    http://192.168.1.100:2480/connect/nuovodb

    sfruttando la Basic Authentication per l'immissione dei parametri. Quest'ultima funzionalità è offerta da Postman. Il codice di ritorno sarà 204 per un login effettuato con successo, o 401 in caso contrario;
  • la disconnessione può essere richiesta come segue:
    http://192.168.1.100:2480/disconnect

Lavorare con i documenti

Una volta connessi potremo creare una nuova classe nel database, tramite una richiesta di tipo POST:

http://192.168.1.100:2480/class/nuovodb/Persona

Se la creazione va in porto, nella risposta HTTP troveremo il codice 201 che notifica l'avvenuta creazione della risorsa. Proviamo ora ad inserire dei documenti nella nuova classe. Anche in questo caso si tratterà di una richiesta POST:

http://192.168.1.100:2480/document/nuovodb

dove riempiremo il corpo della richiesta con un oggetto JSON in cui riporremo il nome della classe nel campo @class e le restanti informazioni in tutti gli altri campi.

Figura 1. Creazione di un documento (click per ingrandire)

Creazione di un documento

Un aspetto interessante è che il corpo della risposta HTTP conterrà l'oggetto JSON appena inserito (quindi i dati forniti da noi) con l'aggiunta di alcuni campi, tra cui @rid che contiene l'ID del nuovo elemento. Inseriremo in questo modo altri due documenti e procederemo con una query per verificarne effettivamente i risultati.

http://192.168.1.100:2480/query/nuovodb/sql/select from Persona

La query sarà effettuata come richiesta GET e come ultimo parametro includerà il codice SQL che la definisce. Come risultato, la risposta HTTP porterà un array di oggetti JSON rappresentanti i vari record salvati:

Figura 2. Risultato di una query (click per ingrandire)

Risultato di una query

I metodi HTTP - PUT e DELETE - serviranno, rispettivamente, per eseguire i comandi di UPDATE e DELETE. Ad esempio, per cancellare il record con RID #10:2 si eseguirà la seguente richiesta DELETE:

192.168.1:100:2480/document/nuovodb/10:2

L'ultimo parametro che verrà accodato è il RID nel quale si dovrà omettere il simbolo #. Il metodo PUT permetterà di modificare un singolo record ed i nuovi dati saranno passati nel corpo della richiesta, anche questa volta in formato JSON. Un aspetto interessante da notare è che si può indicare la modalità con cui eseguire la modifica: il default sarà il cosiddetto full mode, che rimpiazza totalmente il record, mentre il partial mode applicherà solo le differenze.

Manipolare database e classi

Oltre a questi primi esperimenti, le API REST offrono l'opportunità di chiedere informazioni o commissionare modifiche a tutti i principali elementi di OrientDB. Per quanto riguarda i database, una GET di questo tipo:

http://192.168.1:100:2480/database/nuovodb

permetterà di leggere le informazioni relative al database nominato come ultimo campo dell'URL riassumendone caratteristiche del sistema operativo (comprese alcune relative alla Java Virtual Machine in uso), classi e cluster, utente corrente ed i parametri di configurazione.

Una POST di questo tipo:

http://192.168.1:100:2480/database/databasenuovo/plocal

permetterà di creare un nuovo database. Si noti che deve essere specificato come ultimo parametro il tipo di memorizzazione.

Abbiamo già visto la creazione di una classe, ma è bene comunque notare che una GET come la seguente:

http://192.168.1.100:2480/class/nuovodb/Persona

permette di ottenere informazioni sulla classe Persona, inclusi numero di record e cluster che la compongono.

Figura 3. Informazioni su una classe (click per ingrandire)

Informazioni su una classe

La classe, così usata, non ha proprietà obbligatorie, e ne abbiamo fatto un uso non strutturato. Se volessimo creare una nuova proprietà, potremmo usare una richiesta POST di questo tipo:

http://192.168.1.100:2480/property/nuovodb/Persona/datanascita

che aggiungerà una nuova proprietà alla classe Persona di nome datanascita. Eseguendo ancora una volta, a questo punto, la GET per ottenere le informazioni sulla classe, troveremmo anche un array di oggetti JSON, contraddistinto dall'etichetta properties, che elenca le proprietà della classe con tanto di caratteristiche:

"properties": [
    {
      "name": "datanascita",
      "type": "STRING",
      "mandatory": false,
      "readonly": false,
      "notNull": false,
      "min": null,
      "max": null,
      "regexp": null,
      "collate": "default"
    }
  ]

Ulteriori funzionalità

Altre proprietà delle API REST permettono di gestire indici, eseguire funzioni ed attivare comandi: la pagina dedicata della documentazione ufficiale mette a disposizione tutte le informazioni necessarie. L'utilità di queste API consiste soprattutto nel poter creare proprie librerie che permettano di interagire con OrientDB tramite qualsiasi linguaggio di programmazione. Si ricordi, comunque, che le prestazioni possono essere ulteriormente migliorate rivolgendosi all'uso del Binary protocol, come accennato in una lezione precedente.

Ti consigliamo anche