costanti / enum in API

4

Quali sono alcuni modi in cui le costanti e le enumerazioni vengono gestite durante la creazione di un client API? Sto scrivendo un client in python per la nostra API e ho raggiunto un punto critico con questo. Usiamo un sacco di mappature ai numeri (per risparmiare spazio) e mi chiedevo quale sia la tecnica migliore. Posso incolparli nel client, ma se viene aggiunta una nuova enumerazione / costante, il consumatore dovrebbe aggiornare la sua versione del client. Ho anche pensato di catturare le mappe / enumerazioni quando il client è stato inizializzato per la prima volta e memorizzato nella cache fino a quando non c'è un aggiornamento. Sono questi approcci tipici o esiste un modo più efficace per farlo?

Modifica: Questa è un'API REST ma sto creando un client python (quindi suppongo specifico per la piattaforma) per renderlo più facile da utilizzare. Per un piccolo dettaglio, quando dico enumerazione, intendo semplicemente usare una costante (come un intero) per rappresentare una certa scelta che un consumatore ha per un determinato attributo. Quindi diciamo che qualcuno che usa l'API sta salvando il tipo di sistema di videogiochi che hanno. 1 = xbox, 2 = playstation, 3 = wii, ecc ... Devo eseguire l'hardcode di quelli nel client python per il consumatore da utilizzare? Li prendo dal server quando il client viene inizializzato e poi li memorizza nella cache lato client?

    
posta tonyl7126 28.01.2014 - 02:30
fonte

1 risposta

3

Non riesco a pensare a nessun motivo per richiedere valori numerici in un'API REST. Utilizza le stringhe e nella specifica , identifica i valori validi.

Se vuoi fare il miglio extra e scrivere enum (o equivalente) per un client specifico della piattaforma, allora fallo, ma dovrai ovviamente mantenerlo. Se possibile, è necessario rendere questi client API parte dello stesso processo di generazione o impostare il sistema di generazione in modo da creare automaticamente i client API ogni volta che si esegue una build di rilascio. In questo modo, una nuova versione del client sarà automaticamente disponibile ogni volta che pubblichi una nuova versione dell'API.

Mi rendo conto che questo non è necessariamente facile da fare, ma tale è la natura del mantenimento dei client specifici della piattaforma. Ecco perché molti manutentori non lo fanno. Oracle potrebbe aver bisogno di farlo ma probabilmente no. Twitter, GitHub, PayPal, ecc. - non mantengono "clienti", solo l'API e le sue specifiche / documentazione. A volte ci sono client open source gestiti da team completamente separati, ma i proprietari del servizio stesso non si assumono alcuna responsabilità per loro.

In genere un client API completamente personalizzato per una determinata piattaforma potrebbe essere chiamato più precisamente un SDK. Trattalo con quel livello di cura e rispetto e il resto dei pezzi dovrebbe andare a posto. Sei davvero preparato a mantenere un SDK?

    
risposta data 28.01.2014 - 04:16
fonte

Leggi altre domande sui tag