Sono un unico sviluppatore e di recente ho scritto una nuova applicazione web sotto forma di API con Swagger e front-end. Questo era il modo in cui i clienti potevano usare l'API da soli, di solito forscripting.
È quasi in fase di completamento e il mio capo che non è uno sviluppatore ha rilevato che l'API sembra troppo difficile per i consumatori e ritiene che ci sarà un po 'di respingimento. Ad esempio, quando premi / api / clienti puoi recuperare i dati correlati nel formato di Id: { name: "Bob", FavoriteProducts: [ 1, 2, 5] }
.
Funziona alla grande per il front-end. Esistono molte pagine che caricano i dati correlati su richiesta, a volte mostriamo un riepilogo del cliente per esempio e non utilizziamo i prodotti preferiti, a volte mostriamo una grande tabella di clienti, quindi tutti i dati correlati richiederebbero un caricamento per sempre.
Dice che i clienti non vorranno dover effettuare chiamate separate per i dati correlati, e dice che su un inserto sarebbe più facile se potessero fornire nomi di prodotti e averli mappati ai loro ID e persistessero magicamente sul back end: { name: "Bob", FavoriteProducts: [ "Plastic Spiders", "Candy", "Pumpkins"] }
. Questo sembra abbastanza innocuo, ma questa è una semplificazione grossolana di molti più dati e molti più endpoint, tabelle di ricerca, tabelle di codici, ecc.
Non abbiamo ancora avuto il nostro primo consumatore, quindi non sappiamo se questo sarà effettivamente un problema, ma ha detto che dalla sua esperienza di scripting, vuole fare il minor numero possibile di chiamate API.
Non sono completamente d'accordo, penso che dovremmo sforzarci di rendere la vita dei nostri clienti più facile, soprattutto perché è un mondo competitivo là fuori. Ma ho anche lavorato duramente per creare un'API RESTful con buone prestazioni e ben documentata tramite Swagger che è consumabile dai generatori di client Swagger (come NSwag) che possono leggere i documenti e sputare un client in quasi tutte le lingue. Penso che ci sia una linea da bilanciare quando si tratta di aggiungere un sacco di codice back-end extra e debito tecnico perché qualcuno non vuole effettuare 2 chiamate API.
Immagino che GraphQL avrebbe potuto renderlo più semplice, ma penso che questo capo avrebbe detto che sarebbe troppo difficile per i clienti scripting imparare questa nuova lingua, e non vorrebbe passare il tempo per imparare perché ha posto il veto ad Angular per questo progetto per quella ragione esatta. Inoltre, non pensavo che questo sarebbe stato un problema. Abbiamo riscritto una grande app legacy che ha archiviato tutti i suoi dati in una singola tabella su un'API RESTful con tabelle di ricerca e convalida dei dati corrette. Quindi ho pensato che avrebbe complicato un po 'il consumo e ho pensato che sarebbe andato bene.