Versioning API: livello di rilascio vs livello funzionale

4

Ho utilizzato un'API in un'app con URI come questi:

/API_Name_1/v1/param1/param2
/API_Name_2/v1/param1
/API_Name_3/v1/param1/param2/param3
/API_Name_4/v1/param1/param2

ecc.

Ora solo una delle mie API [es. API_Name_2] necessario cambiare mentre gli altri devono rimanere gli stessi. Dovrei semplicemente aggiornare questo particolare o tutti al livello successivo?

Rinominare i servizi rimanenti in modo che tutti sembrino avere una versione comune non mi sembra necessario, ma se aggiorno solo il singolo servizio, sembra una discrepanza tra le versioni dei servizi.

Qualunque linea guida generale segua per questo?

/API_Name_1/v1/param1/param2
/API_Name_2/v2/param1
/API_Name_3/v1/param1/param2/param3
/API_Name_4/v1/param1/param2

vs

/API_Name_1/v2/param1/param2
/API_Name_2/v2/param1
/API_Name_3/v2/param1/param2/param3
/API_Name_4/v2/param1/param2
    
posta Amit Tomar 14.09.2017 - 14:42
fonte

2 risposte

1

In sostanza, la domanda è se tu collabori tutte le API insieme nel loro insieme, o ogni singola API per se stessa.

Il mio suggerimento è: Esegui ciò che fa funzionare meno, per gli utenti e te stesso , consumando l'API e la sua documentazione, programmando il servizio e documentandolo.

Dato che gli utenti non dovranno mai lavorare con un server obsoleto, ponendo la domanda di quando una nuova API (versione di) è stata introdotta senza senso, la versione è completamente indipendente.

Se gli utenti dovevano fare i conti con i server che offrono versioni precedenti dell'intera API, avrebbe senso avere una nuova versione utilizzata coerentemente su tutte le API modificate o introdotte in quella versione, ma seguire comunque lo stesso schema.

    
risposta data 14.09.2017 - 14:55
fonte
1

In realtà non ho abbastanza informazioni per rispondere alla tua domanda in modo più specifico, ma ci sono alcune cose da considerare:

  • Qual è la fine della vita della vecchia API?
  • Qual è la priorità aziendale per ottenere l'aggiornamento (quanto è urgente)?
  • La nuova API cambia il modo in cui ti autentichi sul sistema?
  • L'API è progettata in modo tale da poter essere combinata?
  • Qual è l'impatto se lasci le cose così come sono?

Sto affrontando molte delle stesse domande a supporto di un'applicazione esistente che è stata originariamente costruita con librerie e dipendenze esterne che sono già in via di esaurimento o che si stanno rapidamente avvicinando. Di conseguenza, dobbiamo essere intelligenti su come introdurre il cambiamento.

Una cosa di cui puoi essere certo è che le API invecchiano e perdono il supporto. Alla fine vengono rimossi completamente. Mi sono imbattuto in quello stesso problema lavorando con un'integrazione di Twitter alcuni anni fa. La domanda che devi porci è quale sia l'urgenza per l'aggiornamento, in particolare se ci sono cambiamenti di rottura.

Il mio processo decisionale personale è qualcosa del genere:

  • Se la fine della vita della vecchia API è almeno un paio di cicli di rilascio, rimanda le modifiche non necessarie finché non posso pianificare di conseguenza.
  • Se l'API cambia, devo aggiornare tutto e le nuove funzionalità non sono critiche, quindi parla con il mio cliente per vedere se possono aspettare fino al nostro aggiornamento.
  • Se l'API cambia che devo aggiornare tutto e le nuove funzionalità sono fondamentali, allora devo apportare le modifiche ora.
  • Se la fine della vita della vecchia API è imminente, ora devo apportare le modifiche.

Onestamente, un'altra grande domanda è quanto l'impatto è necessario per l'aggiornamento? Ho seguito un processo in cui ho tentato di aggiornare un progetto web a NetCore. Tutto il mio lavoro di back-end è stato facile da aggiornare e ha funzionato con l'app web esistente. Le modifiche richieste a causa dell'edizione NetCore di ASP.Net MVC causavano riscritture importanti. Di conseguenza, questa parte doveva essere rimandata. Potremmo fare un altro percorso completamente per il front-end della nostra applicazione.

Il mio punto è che gli aggiornamenti di versione non sono unici per le versioni dell'API Web, ma devi sapere quando le API web vanno fuori servizio. Una volta che sono offline, l'applicazione si interrompe. Se hai abbastanza tempo, è meglio pianificare gli aggiornamenti gradualmente quando puoi assorbire le modifiche nel normale ciclo di sviluppo.

    
risposta data 14.09.2017 - 16:49
fonte

Leggi altre domande sui tag