Progettazione dell'API per app modulari

1

Supponiamo che un'app Web sia composta da moduli indipendenti:

example.com/accounting
example.com/employees
example.com/admin

Il passaggio successivo è l'aggiunta di un'API che normalmente potrebbe terminare in questo modo:

example.com/api/v1/accounting
example.com/api/v1/employees
example.com/api/v1/admin

Ho lavorato prima in questo modo ed è stata la cosa più naturale, ma ora che ogni sotto-app è una bestia unica che ha anche operazioni di distribuzione indipendenti, questo modello è nato come idea:

example.com/accounting/api/v1
example.com/employees/api/v1
example.com/admin/api/v1/

Ci sono dei lati negativi tra i due modi di organizzare la mia API tra i moduli di cui dovrei essere a conoscenza?

Sto cercando di pensare ai costi di implementazione, al caching, alla sicurezza ... ma non riesco a trovare alcun chiaro svantaggio. L'unica cosa che mi dà fastidio è la mia abitudine di avere tutte le operazioni API sotto un percorso root comune.

    
posta SystematicFrank 07.04.2015 - 17:42
fonte

1 risposta

1

Come menzionato da Frank, dipende da quanto indipendenti sono i moduli indipendenti. Nell'esempio sopra, e nella vita reale, c'è probabilmente una dipendenza comune per questi tre endpoint, vale a dire un archivio dati persistente.

Una buona denominazione dell'API comunica con l'utente dell'API. Se non c'è veramente alcuna dipendenza, dovresti usare il secondo modello poiché ciò implica che le API: s sono separate e potresti ad es. sposta una delle API: s in un nuovo server e URL senza influire sulla semantica dell'API.

Ma se hai qualche dipendenza, dovresti usare la prima. Altrimenti potresti avere il seguente scenario:

  • Management scopre la virtù dell'e-mail e decide che tutti i numeri di fax nel db devono essere sostituiti da indirizzi e-mail.
  • Aggiorna /employees/api/v1 e bump il numero di versione, /employees/api/v2
  • Ma la modifica del db ti costringe anche ad aggiornare /admin/api/v1/ in /admin/api/v2/

Ora devi comunicare a tutti i tuoi utenti che devono utilizzare v2 per admin e dipendenti e v1 per la contabilità. Cioè devi comunicare che esiste una dipendenza tra l'apis. In questa situazione è più chiaro avere un numero di versione per l'intera API.

È buona prassi modulare la roba, ma in realtà di solito c'è la gigantesca dipendenza globale chiamata database a cui pensare.

    
risposta data 18.04.2015 - 17:29
fonte

Leggi altre domande sui tag