A seconda dell’applicazione, l’elemento centrale di Swagger consiste in un file di testo in formato JSON o YAML. L’interfaccia utente (UI), che semplifica la creazione della documentazione API, è basata su HTML e JavaScript. In sostanza, Swagger ha un formato neutro dal punto di vista del linguaggio ed è leggibile dalle macchine. Inoltre, l’interfaccia utente può essere utilizzata non solo per gestire la documentazione, ma anche per eseguire, ad esempio, i test ad hoc di Swagger.
Il potenziale di Swagger risiede soprattutto nella sua espandibilità, resa possibile da una libreria centrale, lo Swagger Core. L’interfaccia utente porta il nome di Swagger UI, mentre il generatore di codice è denominato Swagger Codegen, a cui si aggiunge lo Swagger Editor.
Come per molte altre offerte open source, Swagger trae il proprio vantaggio principale dal suo vasto ecosistema su GitHub, dove gli sviluppatori possono trovare generatori di codice per quasi tutti i linguaggi di programmazione. Swagger documenta ogni interfaccia con tutte le informazioni necessarie.
Il file di documentazione inizia con la specificazione relativa alla versione utilizzata, a cui fanno seguito le informazioni generali sull’API, riportate in ordine sotto la categoria “Info”. Swagger separa anche l’host, il percorso e l’URL, specificandoli individualmente. Dopo aver ultimato questo passaggio, viene indicato il media-type per tutta l’API. Questa fase può essere paragonata a un complesso sistema di flashcard.
Al termine di questa categorizzazione viene visualizzato il contenuto: i percorsi, gli operatori e i parametri vengono preparati insieme alle corrispondenti descrizioni. I tipi di dati vengono gestiti separatamente. L’interfaccia utente di Swagger consente di visualizzare il tutto non solo sotto forma di testo, ma anche graficamente. Ciò si rivela particolarmente utile per l’invio di richieste di test dirette operate dal browser. Questo mix di documentazione e la possibilità di generare richieste dirette di API è il segreto della popolarità di Swagger.