Supponiamo che tu abbia un servizio web, che aggiunge la logica di business su un'origine dati. A quanto assomigliano tutte le API di questo servizio, dato un insieme di vincoli, forniscimi gli elementi dall'origine dati che soddisfano questi vincoli. Puoi dire che ottieni una "vista" dell'origine dati dall'API.
Ora, nel corso del tempo ti viene chiesto di restituire diversi tipi di visualizzazioni sull'origine dati. Hai la possibilità di aggiungere nuove API per ogni vista "sufficientemente distinta", o di cambiare marcia e fornire un'API getFooDataView (), che accetta un parametro che specifica il tipo di visualizzazione che desideri. Hai diverse pressioni concorrenti per decidere quale strada percorrere:
- Il grande cliente esistente del tuo servizio preferirebbe essere pigro e non dover codificare le nuove API quando sono necessarie nuove viste sui dati.
- Tuttavia, alcuni dei parametri della tua richiesta (vincoli) hanno senso solo per alcune visualizzazioni, e non per gli altri - dovresti rendere più flessibile il tuo contratto API dicendo "bene se vuoi XYZ view, settando il" foo " parametro non avrà alcun effetto ", con lo sfortunato effetto collaterale che non è possibile rendere" foo "un parametro obbligatorio anche se è così per alcune delle viste.
- Sta diventando sempre più il caso che i nuovi clienti vogliono sfruttare il tuo servizio. Non puoi decidere quale sarebbe più confusionario per loro - dovendo scegliere tra API diverse, ma più definite, e una API in cui devono sapere quale combinazione di parametri dà loro realmente ciò che vogliono.
Per distillare questo, quando si disegna la linea che qualcosa dovrebbe essere la sua API in contrapposizione a una variazione di un'API esistente? Diverse persone con cui lavorare hanno opinioni diverse su ciò che rende semanticamente distinte due richieste client, quindi può essere difficile ottenere un consenso su questo argomento. Desiderate inoltre assicurarvi che il vostro servizio non sia proibitivo per i futuri clienti. Quali sono alcune buone pratiche che fanno questo tipo di scelta?