Sto considerando opzioni per specificare un'API in una libreria di codici (ad es. XML o JSON) che può essere utilizzata da vari client.
Oltre ai tipi standard di specifiche di input / output, sto considerando di includere le informazioni RBAC per consentire ai clienti di prendere decisioni informate sul fatto che un'API possa essere chiamata in un particolare contesto di esecuzione. Ad esempio, un consumatore dell'API potrebbe desiderare di sopprimere un link su una pagina Web se l'esecuzione di tale link richiede un ruolo che l'utente corrente non ha.
Riesco a vedere gli argomenti a favore e contro questo:
Pro:
- Consente un'unica fonte di verità per il "contratto" dell'API, incluse tutte le informazioni rilevanti su chi può chiamarlo
- Controversia: gli sviluppatori di API possono essere implementati in librerie di codici e repository separati; ora devono aggiornare un documento di specifiche centralizzate oltre al proprio repository.
Con:
- Combina le preoccupazioni: le risorse e i ruoli autorizzati ad accedere a tali risorse sono cose separate.
- Controversia: la specifica API è un identificatore del caso d'uso, non solo un identificatore di risorse. Definisce gli input e gli output previsti per un caso d'uso e i casi di errore derivanti da un caso d'uso errato.