Skip to content

crivi30/SpringBootAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 

Repository files navigation

Spring boot Web Service

Un Web Service è un sistema software in grado di mettersi al servizio di un Client (applicazione, sito web, Postman), comunicando tramite il protocollo HTTP. Un Web service consente quindi agli utenti che vi si collegano di usufruire delle funzioni che mette a disposizione. Con Spring Boot, è stato possibile creare questo software che lancia l'intera applicazione web, compreso il web server integrato.

Il Data-set rappresenta la provenienza dei turisti che hanno visitato la regione Lazio o le sue provincie (es. Viterbo). I turisti sono catalogati per paese di residenza (es. Italia) e regione geografica di residenza (es. Unione Europea). I dati sono registrati in Esercizi Alberghieri (arrivi e presenze), Esercizi Complementari (arrivi e presenze) e Totale Esercizi Ricettivi (arrivi e presenze).

La nostra applicazione permette di richiedere mediante API REST (GET o POST) con rotte distinte:

  • Restituzione dei metadati, formato JSON, ovvero l’elenco degli attributi, alias degli stessi e tipo di dati contenuti.
  • Restituzione dei dati riguardanti ogni record, formato JSON.
  • Restituzione dei dati riguardanti record filtrati, formato JSON.
  • Restituzione delle statistiche sui dati di uno specifico campo.
  • Restituzione delle statistiche sui dati di uno specifico campo, su record filtrati.

note: come effettuare richieste.

Come iniziare

Download

Usando l'ide eclipse si possono seguire i seguenti passi:

  • aprire eclipse, nella Show view premere il pulsante "clone a Git Repository".
  • nella finestra che appare, incollare URL di questa repository nella casella URI e procedere.
  • recarsi nel clone della repository che apparirà, tasto destro quindi Import Project (verificare che sia importato come progetto Maven) e procedere.
  • a questo punto potete provare ad eseguire il codice, selezionando "nome_Progetto" tasto destro, "Run as" e quindi "Sprign boot App".

In alternativa su linux senza l'utilizzo del ide eclipse si puo scaricare il file Zip ed estrarlo, da terminale recarsi nella directory, digitare il comando mvn clean install se il BUILD avrà suceccesso, all'interno del progetto nella directory target si troveranno i file compilati. Per eseguire il programma java -jar target/nomeProgettoCompilato.jar (oppure mvn spring-boot:run).

Ora l'aplicazione Web Service sarà attiva e in ascolto alla porta http://localhost:8080.

Eseguire richieste

Per eseguire le richieste GET o POST si può installare un API testing, (ad esempio: Postman). La seguente tabella mostra le richieste possibili.

TIPO rotta descrizione
GET /metadata restituisce gli alias utilizzati
GET /data restituisce l'intero dataset
GET /stats?field="nome" restituisce una statistica sul "nome" specificato fatta sull'intero dataset.
POST /data restituisce i record che rispettano i filtri specificati nel body della richiesta
POST /stats?field="nome" restituisce una statistica sul "nome" specificato basandosi sui record che rispettano i filtri specificati nel body della richiesta

La segunete tabella mostra i filtri disponibili

Nome operatore Descrizione Esempio
Greater maggiore (valido per campi numerici) {"EsAlbArr":{"Greater":100000}}
Less minore (valido per campi numerici) {"EsAlbArr":{"Less":100000}}
Included compreso tra (valido per campi numerici) {"EsAlbArr":{"Included":[100,5000]}}
NotIncluded non compreso tra (valido per campi numerici) {"EsAlbArr":{"NotIncluded":[100,5000]}}
In trova una corrispondeza con i valori dell'array (valido per stringhe) {"ProvDest":{"In":["Roma"]}}
Nin non trova una corrispondeza con i valori dell'array (valido per stringhe) {"ProvDest":{"Nin":["Roma","Viterbo"]}}

Inoltre è possibile combinare più filtri, per fare questo, è sufficiente specificare il modo in cui si vogliono combinare i fitlri utilizzati: and oppure or prima dell'operatore, utilizzando il comando "type". Ad esempio il filtraggio seguente selezionarà i record che hanno EsAlbPres compreso tra 10 e 1000 ma abbiano anche nel campo ProvDest Roma:

{ "EsAlbPres":{"Included":[10,1000]}, "ProvDest":{"type":"and","In":["Roma"]} }

note: è possibile inserire un filtro per ogni campo contemporaneamente, concatenati nel modo desiderato(and/or).

Sviluppo

Package

Classi

  • Package com.esame.controller

  • Package com.esame.database

  • Package com.esame.model

  • Package com.esame.service

  • Package com.esame.exception

  • Package com.esame.util.filter

  • Package com.esame.util.statistics

Chiamate

  • Chiamata GET /metadata ControllerClass esegue una chiamata tramite il metodo getArrayMetadata, il quale inizializza un ArrayList di metadata e lo restituisce. ControllerClass trasforma quest ultimo in Json e lo ritorna al client.

  • Chiamata GET /data ControllerClass esegue una chiamata tramite il metodo getRecords, il quale restituisce l'intero ArrayList di Record. ControllerClass trasforma quest ultimo in Json e lo ritorna al client.

  • Chiamata POST /data ControllerClass esegue una chiamata tramite jsonParserColumn alla classe JsonParser, che insieme a jsonParserOperator effetueranno il parsing del body ricevuto in modo ciclico. Estrapolate le informazioni relative al filtraggio richiesto, verranno utilizzate da instanceFilter per istanziare nuovi oggetti filtro prendedoli della classi contenute nel package com.esame.util.filter. A questo punto tramite runFilter si potrà eseguire il filtraggio e restituire a ControllerClass l'Arraylist di Record filtrato da consegnare al Client in formato Json.

  • Chiamata GET /stats?field="nome" L'arrayList di Record sul quale fare il calcolo delle statisctiche viene ottenuto nel modo spiegato nella richiesta GET /data. Viene passato il nome del campo su cui si desidera effettuare la statistica a instanceStatsCalculator, il quale instanzia l'oggetto StasCalculator corretto dalle classi contenute nel package com.esame.util.statistics. Quest'ultimo tramite il metodo run eseguirà il calocolo statistico che verrà incapsulato come oggetto stats, e restituito in formato Json al client

  • Chiamata POST /stats?field="nome" L'arrayList di Record sul quale calcolare le statisctiche viene ottenuto nel modo spiegato nella richiesta POST /data. Il calcolo statistico viene eseguito come spiegato nella richiesta GET /stats?field="nome"

Softwere utilizzati

  • Eclipse - ambiente di sviluppo integrato
  • Spring Boot - framework per sviluppo applicazioni Java
  • Maven - strumento di gestione di progetti

Autori

About

Spring boot Web Service - Rome Turism Data

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published