Benvenuti a OpenDev Explorer, la mia rubrica dedicata all’esplorazione del mondo Open Source che strizza un occchio alla developer experience. Io sono Riccardo (aka TheZal) e oggi vi parlerò di quello che potrebbe diventare il nuovo migliore amico di ogni backendista: Bruno, un bassotto a caccia di API.
Panoramica generale
Oggi facciamo la conoscenza di Bruno, un API Client con il logo di un bassotto che ha come obiettivo quello di ridefinire il paradigma degli API Client corrente, sfidando i colossi del settore come Postman.
Ma cosa rende Bruno speciale? Quelle che lo differenzia dagli altri sono le sue caratteristiche tra cui: il focus sulla privacy, la semplicità d’uso, l’introduzione di un nuovo markup language per la documentazione delle api e l’attenzione rivolta alla Developer Experience, ma procediamo con ordine!
Manuale d’istruzioni
Installazione
Bruno è disponibile per Windows, macOS e Linux. Si può scaricare dal sito ufficiale o installarlo tramite il gestore di pacchetti del proprio sistema operativo usando uno dei seguenti comandi:
# Su Mac come Homebrew
brew install bruno
# Su Windows come Chocolatey
choco install bruno
# Su Linux tramite Snap
snap install bruno
# Su Linux tramite Apt
sudo mkdir -p /etc/apt/keyrings
sudo gpg --no-default-keyring --keyring /etc/apt/keyrings/bruno.gpg --keyserver keyserver.ubuntu.com --recv-keys 9FA6017ECABE0266
echo "deb [signed-by=/etc/apt/keyrings/bruno.gpg] http://debian.usebruno.com/ bruno stable" | sudo tee /etc/apt/sources.list.d/bruno.list
sudo apt update
sudo apt install bruno
Code language: PHP (php)
Inoltre è disponibile anche come estensione per Visual Studio Code, così non dovrai lasciare il tuo IDE per intergaire con Bruno.
L’utilizzo è molto semplice, una volta importata la collection (che può essere di diversi tipi come Postman, Insomnia, OpenAPI, ecc.) si può iniziare a fare richieste alle API. Per farlo basta cliccare sul pulsante “Send” e Bruno si occuperà di tutto il resto.
L’utilizzo
Bruno, come detto sopra, utilizza un nuovo markup language proprietario, ovvero Bru.
Un semplicissimo esempio di un file Bru che fa una richiesta GET a un endpoint è il seguente:
meta {
name: Repository Info
type: http
seq: 2
}
get {
url: {{baseUrl}}/repos/usebruno/bruno
}
Code language: JavaScript (javascript)
Come si può notare, il file è diviso in due sezioni: meta
e get
. La prima contiene le informazioni generali sulla richiesta, mentre la seconda contiene le informazioni specifiche per la richiesta GET. In questo caso, la richiesta viene fatta all’endpoint {{baseUrl}}/repos/usebruno/bruno
dove {{baseUrl}}
è una variabile definita dall’enviroment scelto nella gui di Bruno che verrà sostituita con il valore corretto al momento dell’esecuzione.
L’esempio è preso direttamente dal loro repository di esempio su github disponibile qui.
La developer experience
La developer experience con Bruno si distingue per l’uso innovativo del linguaggio Bru e per l’approccio al versioning della documentazione delle API. Bru è un linguaggio di markup progettato specificatamente per il caso d’uso di Bruno e offre un modo efficiente e intuitivo per salvare le informazioni relative alle richieste API. Questo linguaggio, essendo plain text, si integra perfettamente con i sistemi di controllo versione come Git, permettendo agli sviluppatori di collaborare facilmente sulle API Collection.
Il versioning della documentazione delle API è reso semplice e trasparente grazie a questa integrazione con i sistemi di version control. Gli sviluppatori possono tracciare le modifiche, collaborare e mantenere le versioni delle loro API collection in modo efficiente, garantendo che la documentazione sia sempre aggiornata e sincronizzata con l’ultima versione del codice. Questo approccio enfatizza l’importanza della privacy dei dati e la sicurezza, mantenendo tutte le informazioni in locale senza piani per una sincronizzazione cloud, in linea con la visione a lungo termine di Bruno per la privacy dei dati.
L’extra mile
L’extra mile di Bruno è rappresentato dalla sua attenzione alla privacy. Bruno è un software open source che non richiede alcuna registrazione e non necessita di piani per una sincronizzazione cloud. Tutti i dati vengono salvati in locale e non vengono mai inviati a nessun server esterno. Questo garantisce la privacy dei dati e la sicurezza, mantenendo tutte le informazioni in locale coerentemente in linea con la visione a lungo termine di Bruno per la privacy dei dati.
Per saperne di più sulla long-term vision di Bruno, è possibile leggere il post su github dedicato.
Il confronto con lo status quo
Bruno vuole quindi andare a ridefinire ciò che è attualmente lo standard per un API Client. Per farlo Bruno si concentra su alcuni punti chiave che andremo ad analizzare.
Come e dove vengono salvate le collection
A differenza di Postman, Bruno decentralizza la gestione delle collection. Ciò significa che non esiste un unico file, ma è possibile salvarle in file separati permettendo di avere una migliore gestione, soprattutto quando si lavora in team. Bruno salva le collection in locale e grazie a questa scelta, è possibile utilizzare Git per tenere traccia delle modifiche, delle versioni e collaborare facilmente con altri sviluppatori.
Come vengono effettuate le richieste API
L’applicazione web di Postman effettua richieste API utilizzando un server proxy proprietario, ciò implica che non hai il controllo sui tuoi dati e sei obbligato a utilizzare il loro server proxy per effettuare le richieste API, rappresentando un considerevole rischio per la sicurezza.
Bruno, invece, effettua richieste API direttamente dal tuo computer, offrendoti il pieno controllo sui tuoi dati e eliminando il rischio di sicurezza associato all’utilizzo di un server proxy.
Postman richiede quindi di essere connesso a internet, invece Bruno funziona offline, permettendoti di lavorare anche quando non sei connesso a internet.
Team collaboration
Postman offre una funzionalità di collaborazione a pagamento per team, con un costo di partenza di $15 al mese per utente (dopo la versione gratuita per 3 utenti). Al contrario, Bruno è completamente gratuito e open source. Puoi utilizzare Git o qualsiasi sistema di controllo delle versioni preferito per collaborare sulle tue raccolte API, senza alcun costo associato. Questa differenza sostanziale nella politica di prezzo rende Bruno un’opzione accessibile e aperta per la collaborazione sui progetti API.
Tiriamo le somme!
Bruno quindi è un API Client open source che si propone di ridefinire il paradigma degli API Client corrente, sfidando i colossi del settore come Postman da cui si distingue per il suo approccio alla privacy, per la semplicità d’uso e per l’attenzione rivolta alla developer experience.
Bruno è disponibile per Windows, macOS e Linux e si può scaricare dal sito ufficiale o installarlo tramite il gestore di pacchetti del proprio sistema operativo.
Darete una chance a Bruno? Qui è TheZal che vi saluta e vi aspetta al prossimo episodio di OpenDev Explorer!