Best practice dell'API Web che inseriscono dati: nidificati o per entità

1

Supponi di avere le seguenti 3 entità:

  • Manuale
  • Versione
  • documento

1 manuale ha più versioni e 1 versione ha più documenti.

Voglio creare un'API Web che consenta ai clienti di inserire manuali, versioni e documenti, ma qual è la procedura migliore?

Accetto l'oggetto dati inviato in una struttura XML / Json annidata:

<Manual>
   <Versions>
      <Documents/>
   </Versions>
</Manual> 

o desidero che i clienti aggiungano l'entità dati per entità?

Inoltre, come funziona con chiavi primarie e chiavi esterne tra i 2 sistemi? Il mio database crea un PK per entità e così anche il database del mio cliente. Devo memorizzare i suoi numeri di riferimento o dovrebbe memorizzare il mio per futuri aggiornamenti, eliminazioni e inserti correlati?

    
posta Zeep 23.01.2018 - 17:26
fonte

2 risposte

1
  • Accetto l'oggetto dati inviato in una struttura XML / Json annidata o desidero che i clienti aggiungano l'entità dati per entità

Entrambi, Consenti al cliente di importare / esportare in blocco una struttura nidificata E dare loro la possibilità di aggiungere un singolo nuovo documento a una versione.

  • Devo memorizzare i suoi numeri di riferimento o deve memorizzare il mio

Ancora una volta, entrambi. Utilizza una chiave combinata di un ID per il cliente che generi e il PK del cliente per il manuale / versione / documento.

Ciò consente ai clienti avanzati di utilizzare la propria chiave. Quale preferiranno. e puoi restituire loro un errore se inviano un duplicato, piuttosto che dover accettare il duplicato e affrontare il problema quando lo richiedono nuovamente.

Per i clienti di base, fare lo stesso, ma generare una chiave univoca per loro se non viene fornita. Permetti al cliente di interrogare il tuo db per ottenere la chiave se la dimenticano.

    
risposta data 23.01.2018 - 17:58
fonte
1

Accetto l'oggetto dati inviato in una struttura XML / Json annidata:

Penso che dovresti farlo solo se è necessario eseguire inserimenti o aggiornamenti collettivi. Tuttavia se altrimenti non dovresti, e costruisci una semplice API REST. Se si desidera supportare le operazioni collettive in futuro, è sempre possibile fornire una nuova chiamata Api. L'ulteriore implementazione dell'API di massa complica le cose se si desidera che il cliente memorizzi la chiave primaria in quanto è necessario inviare una risposta complicata con la chiave primaria a ciascun nuovo elemento inserito.

Devo memorizzare i suoi numeri di riferimento o deve memorizzare il mio

Devi assolutamente conservare il numero di riferimento del cliente. A meno che il cliente non voglia utilizzare il proprio numero di riferimento per le richieste di acquisto, non credo che sia molto utile archiviare la chiave primaria nel sistema dei clienti.

    
risposta data 23.01.2018 - 22:21
fonte

Leggi altre domande sui tag