[vc_row][vc_column][vc_column_text]Tempo di lettura: 5 minuti

Con l’avvento delle APP, l’obsolescenza dei portali di servizi scritti ‘alla vecchia maniera’, con elaborazione completamente lato server, sta facendosi sentire con forza. Nasce perciò il bisogno di riscrivere l’interfaccia, magari senza perdere il gran lavoro fatto sul livello di struttura dati e business intelligence. Ma come?[/vc_column_text][vc_custom_heading text=”DAL PARADIGMA DATABASE-CENTRIC A QUELLO API-CENTRIC” use_theme_fonts=”yes”][vc_column_text]Il problema grosso, in questi casi, sta nella necessità di convertire le chiamate al DB in atrettante operazioni AJAX su di un backend REST.

Se il lavoro è affidato allo stesso sviluppatore che ha realizzato l’applicativo col precedente paradigma, il cambio di approccio cui dovrà sottoporsi è notevole.

E soprattutto occorre dare risposta al seguente quesito: le API dovrò scriverle tutte A MANO?

Infatti finora avevamo:

  • accesso diretto al db, in lettura e scrittura
  • logica di business cablata nel codice dell’applicazione (es. il livello Controller in PHP)

Mentre d’ora in poi dovremmo ragionare in termini di:

  • accesso REST per la modifica dei dati grezzi
  • eventuali endpoint che gestiscano internamente la BI

Se non esistesse una soluzione abbastanza generica e potente da prendersi cura per noi del grosso del ‘lavoraccio’ di porting dei dati, sarebbero guai…[/vc_column_text][vc_custom_heading text=”QUICKSTART CON DREAMHOST” use_theme_fonts=”yes”][vc_column_text]Per fortuna, non siamo i primi ad affrontare questa evenienza, perciò con buona probabilità qualcun’altro ha già capito come risolvere elegantemente il problema.

Ad esempio, utilizzando il framework Dreamfactory possiamo colmare questa lacuna velocemente, senza esporci agli errori classici dei lavori ripetitivi (es. quello di creare un layer REST per ogni tabella del nostro DB) ma permettendoci di concentrare l’attenzione sulle questioni davvero importanti: il porting della BI e la scrittura del frontend.

Cosa occorre?

  • un server o una macchina di prova
  • il software Dreamfactory (DF, per semplicità)
  • un accesso al db (deve essere accessibile da parte della macchina su cui è ospitato DF)

Dreamfactory può essere scaricato a partire da questa pagina. Noterete che è disponibile in diverse varianti, scegliete pure quella che vi piace di più.

L’installazione richiede qualche minuto, alla fine sarà opportuno registrare un utente amministratore dell’istanza locale e voilà![/vc_column_text][vc_custom_heading text=”DA DB A API REST IN 30 SECONDI” use_theme_fonts=”yes”][vc_column_text]Esporre le tabelle di un db sotto forma di API REST con Dreamfactory è davvero semplice.

Ecco i passi necessari.[/vc_column_text][vc_custom_heading text=”ACCEDERE ALLA DASHBOARD DI DREAMFACTORY” font_container=”tag:h3|text_align:left” use_theme_fonts=”yes”][vc_single_image image=”1351″ img_size=”large”][vc_custom_heading text=”AGGIUNGERE UN NUOVO SERVIZIO” font_container=”tag:h3|text_align:left” use_theme_fonts=”yes”][info_list font_size_icon=”24″][info_list_item list_title=”Selezionare il menu SERVICES” list_icon=”Defaults-thumb-tack”][/info_list_item][info_list_item list_title=”Selezionare il pulsante CREATE” list_icon=”Defaults-thumb-tack”][/info_list_item][info_list_item list_title=”Scegliere il tipo di database dal menu SERVICE TYPE” list_icon=”Defaults-list-ul”][/info_list_item][/info_list][mk_padding_divider][ult_hotspot main_img=”id^1350|url^https://appcademy.tech/wp-content/uploads/2016/12/appcademy-dreamfactory-schema-add.png|caption^null|alt^null|title^appcademy-dreamfactory-schema-add|description^null”][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”#dd9933″ tooltip_custom_bg_color=”#ffffff” tooltip_continuous_animation=”on” hotspot_position=”5.813953488372093,51.17056856187291″]1. Selezionare il menu SERVICES[/ult_hotspot_items][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”#dd9933″ tooltip_custom_bg_color=”#ffffff” tooltip_continuous_animation=”on” hotspot_position=”15.348837209302326,6.856187290969899″]2. Selezionare CREATE[/ult_hotspot_items][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”rgba(221,153,51,0.33)” hotspot_position=”40.46511627906977,27.257525083612038″]3. Scegliere il tipo di database dal menu SERVICE TYPE[/ult_hotspot_items][/ult_hotspot][info_list font_size_icon=”24″][info_list_item list_title=”Scegliere il nome per l’endpoint REST” list_icon=”Defaults-pencil”][/info_list_item][info_list_item list_title=”Inserire i dati per il collegamente al servizio MySQL” list_icon=”Defaults-cogs gears”][/info_list_item][info_list_item list_title=”Salvare” list_icon=”Defaults-floppy-o save”][/info_list_item][/info_list][mk_padding_divider][ult_hotspot main_img=”id^1355|url^https://appcademy.tech/wp-content/uploads/2016/12/appcademy-dreamfactory-db-create.png|caption^null|alt^null|title^appcademy-dreamfactory-db-create|description^null”][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”rgba(221,153,51,0.33)” hotspot_position=”42.63565773187682,15.719063545150503″]4. Inserire il nome dell’endpoint REST[/ult_hotspot_items][/ult_hotspot][ult_hotspot main_img=”id^1352|url^https://appcademy.tech/wp-content/uploads/2016/12/appcademy-dreamfactory-db-config.png|caption^null|alt^null|title^appcademy-dreamfactory-db-config|description^null”][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”#dd9933″ tooltip_custom_bg_color=”#ffffff” tooltip_continuous_animation=”on” hotspot_position=”18.95349192064862,24.08026755852843″]5. inserire i dati per l’accesso al servizio MySQL nel tab CONFIG[/ult_hotspot_items][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”rgba(221,153,51,0.33)” hotspot_position=”93.56589029001636,6.521739130434782″]6. Salvare[/ult_hotspot_items][/ult_hotspot][vc_custom_heading text=”VISUALIZZARE E TESTARE IL NUOVO ENDPOINT” font_container=”tag:h3|text_align:left” use_theme_fonts=”yes”][ult_hotspot main_img=”id^1360|url^https://appcademy.tech/wp-content/uploads/2016/12/appcademy-dreamfactory-api-doc.png|caption^null|alt^null|title^appcademy-dreamfactory-api-doc|description^null”][ult_hotspot_items icon=”Defaults-circle-o” icon_size=”32″ icon_color=”#dd9933″ tooltip_custom_bg_color=”#ffffff” tooltip_continuous_animation=”on” hotspot_position=”54.21317521915879,21.73913043478261″]Nella lista degli endpoint disponibili sarà visibile un nuovo record col nome appena impostato.[/ult_hotspot_items][/ult_hotspot][vc_custom_heading text=”QUALI OPERAZIONI SUL NUOVO ENDPOINT?” use_theme_fonts=”yes”][vc_column_text]Il nuovo endpoint creato permette l’accesso ai dati su db secondo questi criteri, visibili e testabili nel pannello API DOCS di Dreamfactory.[/vc_column_text][info_list font_size_icon=”24″][info_list_item list_title=”SELECT” list_icon=”Defaults-search”]la selezione dei dati avviene attraverso una chiamata con metodo http GET sull’endpoint

/*NOME_SERVIZIO*/_table/*NOME_TABELLA*/[/info_list_item][info_list_item list_title=”INSERT” list_icon=”Defaults-plus”]l’aggiunta di nuovi record avviene attraverso una chiamata con metodo http POST sull’endpoint

/*NOME_SERVIZIO*/_table/*NOME_TABELLA*/[/info_list_item][info_list_item list_title=”UPDATE” list_icon=”Defaults-refresh”]l’aggiornamento dei record avviene attraverso una chiamata con metodo http PUT sull’endpoint

/*NOME_SERVIZIO*/_table/*NOME_TABELLA*/[/info_list_item][info_list_item list_title=”DELETE” list_icon=”Defaults-trash”]la cancellazione dei record avviene attraverso una chiamata con metodo http DELETE sull’endpoint

/*NOME_SERVIZIO*/_table/*NOME_TABELLA*/[/info_list_item][/info_list][mk_padding_divider][vc_column_text]A questo punto la lettura e scrittura di dati su DB potrà essere effettuata attraverso chiamate AJAX, usando ad esempio JQuery, AngularJS o ogni altri framework di sviluppo frontend.[/vc_column_text][vc_custom_heading text=”E POI?..” use_theme_fonts=”yes”][vc_column_text]Il grosso è fatto. Ora però rimangono alcune operazioni da fare, per poter iniziare lo sviluppo vero e proprio lato frontend, ovvero:[/vc_column_text][info_list font_size_icon=”24″][info_list_item list_title=”Gestire l’autenticazione utenti” list_icon=”Defaults-key”]Probabilmente infatti il nostro DB conterrà anche le credenziali di accesso per gli utenti. Occorrerà trasformare questi record in altrettanti accessi alle API DreamFactory. Vedremo questo aspetto al prossimo appuntamento.[/info_list_item][info_list_item list_title=”Impostare il framework JS del frontend” list_icon=”Defaults-wrench”]Le operazioni riguardano la gestione del token di sessione lato client, la corretta configurazione CORS e la definizione di una chiave di accesso per l’APP che andremo a sviluppare.[/info_list_item][info_list_item list_title=”Lavorare sulla Logica di Business” list_icon=”Defaults-flask”]Sarebbe imprudente esporre lato client le funzioni legate alla Business Intelligence (Logica di Business), sia per ragioni strategiche (spesso in questa parte dell’applicazione risiede il vero e proprio valore che i clienti ci pagano) che di praticità (talvolta alcune operazioni atomiche coinvolgono più tabelle, pertanto è opportuno e saggio predisporre un endpoint apposito che gestisca l’intera operazioni per noi). Anche questo aspetto sarà oggetto di un prossimo articolo.[/info_list_item][/info_list][/vc_column][/vc_row]