Ho valutato un numero di schemi di versioning per apis REST (intestazione, url, ...). Finora, l'approccio più affidabile sembra essere l'opzione url: funziona con i proxy e non si basa su schemi oscuri come dates for versioning.Controllo versione semantico degli apis REST?
Ora, quando mi guardo intorno, tutti quelli che utilizzano l'approccio basato su URL sembrano utilizzare versioni come v1
, v2
e così via. Nessuno usa versioni minori o anche uno schema come semantic versioning.
Ciò solleva alcune domande:
- Quando si fa a aumentare il numero di versione di un API REST (di sicuro, di avere ulteriori aggiornamenti ad esso non solo una volta ogni cinque anni)?
- Se si dispone solo di una correzione di bug, probabilmente non si aumenta il numero di versione, ma come si differenziano entrambe le versioni?
- Se si utilizza un approccio molto granulare, si finisce con lotti di versioni che è necessario ospitare in parallelo. Come lo gestisci?
In altre parole: Come fa una società come GitHub, per esempio, far avere solo v3
oggi (2015), quando sono in giro in attività già da 7 anni? Significa che in realtà hanno cambiato solo la loro api due volte? Non riesco a crederci.
Eventuali suggerimenti?
In realtà questo è il numero di versione principale. Penso che le versioni delle risorse siano molto più importanti, ma nessuno ne parla. – inf3rno
Puoi spiegare un po 'di più cosa intendi per * versioning delle risorse *? –
Ofc. quando una risorsa cambia, deve cambiare il numero di versione. Aggiornando un client, deve inviare il numero di versione della rappresentazione della risorsa memorizzata localmente insieme alla richiesta, e così il servizio saprà se ha una nuova versione della risorsa o meno.La gente chiama questo etag, ma se hai una risorsa o una risposta con più risorse, non puoi inviare più intestazioni etag (afaik), quindi devi inviare i numeri di versione nel corpo. – inf3rno