API versioning

Luca Bianchi <[email protected]> Sat, 22 Feb 2014 13:16:25 +0100
Newsgroups gmane.comp.cms.cold-fusion.devel.italian
Message-ID <[email protected]>
Ciao lista,
Mi trovo a dover versionare delle API, in modo da poter supportare client c=
he abbiano un tempo di migrazione abbastanza lento: rilascio delle API in b=
eta, rilascio pubblico, deprecation delle vecchie, ritiro delle vecchie.

Ho definito una policy di questo tipo per i rilasci:
- major release: retrocompatibilit=C3=A1 non garantita, le signature posson=
o cambiare cos=C3=AC come le interfacce
- minor release: le interfacce non cambiano, possono solo essere aggiunte n=
uove API, il comportamento interno pu=C3=B2 cambiare di molto (es. uso un'a=
lgoritmo pi=C3=B9 preciso)=20
- refresh release: sono bug fix e small improvement, i client possono anche=
 ignorarle, nulla cambia

Il tema per=C3=B2 =C3=A9 capire qual'=C3=A9 il modo migliore.=20
Che io sappia ci sono 3 possibilit=C3=A0:
- url component es. http://www.mioservizio.com/rest/2/my/great/api
In questo caso propenderei per mettere nella url component solo la major ve=
rsion
- header http: in questo caso diventa anche scomodo via il test manuale. Po=
sso per=C3=B2 fissare il default all'ultima versione supportata, etc.
- query string: questa =C3=A9 quella che mi piace meno=20

Cosa consigliate?

Inviato da iPad

------------------------------------