Ingresso
API
API
Le API di cui si parla qui non sono insetti ma Application Programming Interface, cioè interfacce per programmare applicazioni. L'idea è che un programma renda disponibile delle "maniglie" con le quali i programmatori possono utilizzare certe funzionalità senza conoscere il dettaglio interno. Recentemente, però, c'è una tendenza a intendere per API delle Web API, cioè il sottoinsieme di maniglie che è accessibile usando il protocollo HTTP, con cui un programma può dialogare con un altro chiamando certi indirizzi di un'applicazione web.
Nel caso di CodeSHOW, le API sono appunto degli indirizzi speciali che possono essere "invocati" non da un browser - come quello che state usando ora: Firefox, Opera, Chrome, Edge, Safari ... - ma da un altro software - come un app per smartphone - per ottenere dei dati che possono essere usati per costruire una vista alternativa.
Immaginiamo che uno sviluppatore, o un gruppo di studenti di una scuola, voglia realizzare una versione di CodeSHOW che usi gli stessi contenuti, la stessa struttura, ma un'interfaccia e una maniera di esplorare la mostra completamente differente.
Per farlo, basta che progetti e sviluppi un software che chiama le API di CodeSHOW, ottiene i dati e su quella base propone un'esperienza di navigazione differente: in 3D, solo testuale, in voce, o chissà che altro.
Sono disponibile attualmente questi servizi:
- https://www.codeshow.it/API/v1 Restituisce l'elenco delle stanze attuali, e per ognuna le stanza adiacenti
- https://www.codeshow.it/API/v1/Concetti Restituisce le informazioni su una stanza, compresi i pannelli della stanza (in questo caso Concetti)
- https://www.codeshow.it/API/v1/Concetti/Programmi Restituisce il contenuto di un pannello (in questo caso, Programmi della stanza Concetti)
- https://www.codeshow.it/API/v1/Search/Hop restituisce i risultati di una ricerca del NOME di una stanza o di un pannello che contenga la stringa "Hop"
- https://www.codeshow.it/API/v1/Find/Hopper restituisce i risultati di una ricerca della stringa "Hopper" nel TESTO di tutti i pannelli
- https://www.codeshow.it/API/v1/randomRoom restituisce l'indirizzo di una stanza e un pannello a caso
I dati sono restituiti in JSON. Ad esempio:
{ "version": "1.2", "host": "https://www.codeshow.it", "results": { "room": "Concetti", "neighbours": { "nord": "Ingresso", "sud": "Contesti", "est": "Codici", "ovest": "Musei" }, "panels": [ "Concetti", "Magia_Digitale", "Programmi", "Codice", "Linguaggi", "Errori", "Esecuzione", "Algoritmi" ] } }Gli eventuali contenuti dei pannelli sono restituiti in HTML, esattamente come sono, senza nessuna formattazione speciale. Sta al progettista dell'app decidere come presentarli al visitatore.
Un semplice esempio di uso delle API di CodeSHOW è questa pagina, che usa il metodo /Find per cercare una parola all'interno di tutti i pannelli della Mostra.
Un altro esempio un po' più complesso (ma non molto: sono 10.000 righe di codice) è CodeCAVE. Si tratta di un omaggio alle textual adventures, cioè un tipo di videogiochi che andavano di moda a partire dalla fine degli anni '70.
Il giocatore si trova in un labirinto, spesso sotterraneo, che deve esplorare per trovare un tesoro. Il tutto senza nessun supporto grafico da parte del programma, ma appoggiandosi solo sull'immaginazione del giocatore.
Uno dei primi e più famosi giochi di questo tipo è Zork, che era scritto in MDL, un dialetto LISP per i computer PDP-10.
CodeCAVE è un omaggio a questa categoria di giochi ed utilizzata i dati e le strutture di CodeSHOW ottenuti tramite chiamate alle API.
E' un esempio di uno dei paradigmi fondamentali della programmazione: la separazione tra interfaccia e dati. Seguendo questo paradigma di progettazione si possono immaginare infiniti modi di accedere ad un set di dati, anche completamente diversi da quello immaginato dal progettista originario.
Non è solo una questione di varianti e di gusti: l'accessibilità di contenuti per persone con disabilità sensoriali è garantita proprio da questa separazione. Un testo potrebbe essere ingrandito, reso più arioso con una spaziatura maggiore tra le lettere o le righe, tradotto in un'altra lingua, oppure trasformato in voce.
Prossimo pannello: ⇨ News
© Codexpo.org - Content released under Creative Commons 4.0 BY/SA/NC
Versione: 20/01/2022 - 18:42:00
Parole: 314Pannelli
Ingresso |
Timeline |
Geo |
Credits |
API |
News |