Fondamentalmente, penso che sia una buona idea per la versione tuo REST API. Questo è buon senso. Di solito si incontrano due approcci su come fare questo:Qual è il vantaggio di versioning un API REST per data come fa Twilio?
- entrambi i casi, si dispone di un identificatore di versione nella URL, ad esempio,
/api/v1/foo/bar
- o, si utilizza un colpo di testa, come ad esempio
Accept: vnd.myco+v1
.
Fin qui, tutto bene. Questo è ciò che almost all big companies do. Entrambi gli approcci hanno i loro pro e contro, e molte di queste cose sono discusse here.
Ora ho visto un approccio completamente diverso, a Twilio, come descritto here. Utilizzano una data:
In fase di compilazione, lo sviluppatore include il timestamp dell'applicazione quando il codice è stato compilato. Quel timestamp va in tutte le richieste HTTP.
Quando la richiesta arriva in Twilio, lo fanno uno sguardo in su. Sulla base del timestamp identificano l'API che era valida quando questo codice è stato creato e si instrada di conseguenza.
È un approccio molto intelligente e interessante, anche se penso che sia un po 'complesso. Può essere fonte di confusione capire se il timestamp è il momento della compilazione o il timestamp quando l'API è stata rilasciata, per esempio.
Ora, mentre in qualche modo trovo questo abbastanza intelligente, mi chiedo quali siano i reali vantaggi di questo approccio. Naturalmente, questo significa che hai solo per documentare una versione del vostro API (quello attuale), ma d'altra parte rende la tracciabilità di ciò che è cambiato più difficile.
Qualcuno sa quali sono i vantaggi di questo approccio, quindi perché Twilio ha deciso di farlo?
Si prega di notare che sono consapevole che questa domanda sembra come se le risposte fossero principalmente basate sull'opinione pubblica, ma immagino che Twilio avesse una buona ragione tecnica per farlo. Quindi, per favore, non chiudere questa domanda come prima cosa basata sull'opinione, come spero che la risposta non lo sia.
Sì, ci sono solo due versioni, ma è possibile specificare qualsiasi data desiderata. Diciamo che ho scritto un'app oggi e non ricordo il numero della versione attuale (data). Quindi uso solo la data di oggi: 2014-12-23. L'API sceglierà automaticamente l'ultima versione dell'API che non è più recente della data specificata. – kelnos
@kelnos: funziona anche con un numero di versione. Ad esempio, puoi avere '/ v1/api /' e '/ v2/api /' ma esponi anche un '/ api /' che punta all'ultima versione, fondamentalmente un alias per '/ v2/api /' – Bogdan
@Bogdan, esponendo una versione predefinita/più recente dell'api, come suggerito con '/ api /', il client è a rischio di accettare modifiche irrisolte, poiché le ultime potrebbero essere v2, v3, ecc. La data offre agli sviluppatori una facile modo per richiedere l'ultima versione di oggi e preservare la sicurezza dalle violazioni delle modifiche che potrebbero essere introdotte domani. – andes