2015-10-30 22 views
6

Sto lavorando a un'applicazione che richiede una contabilità a partita doppia. Attualmente ci sono due punti finaliValori aggregati nelle API REST

/account 
/transaction 

Mentre /account gestisce i dati generali dei conti, /transaction gestisce le transazioni per i depositi/ritiro. Il saldo del conto viene calcolato in base alle transazioni correlate. Li ho tenuti separati per ottenere coerenza nella contabilità durante il trasferimento del valore da uno a un altro account.

La mia domanda è come rappresentare il saldo di un account sull'endpoint /account poiché verrà sempre calcolato al momento della richiesta. Una risposta dovrebbe contenere il saldo come un campo di sola lettura? Questo ha un cattivo design API da tutti i campi, ma questo potrebbe essere scrivibile/aggiornabile.

L'alternativa venire in mente sarebbe quello di estendere l'endpoint per

/account/{id}/balance 

ritorno solo il saldo del conto in merito. Tuttavia, questo richiederebbe sempre una seconda chiamata per ottenere il saldo in aggiunta ai dati rimanenti dell'account. Forse la risposta potrebbe essere generalizzata su come rappresentare i valori aggregati.

risposta

0

Ottima domanda. Mi imbatto in situazioni come questa, spesso. Vorrei dire due cose:

  1. Probabilmente avere altri campi "sola lettura", come "id"
  2. Non si può decidere di sostenere il tempo necessario per calcolare il saldo corrente ogni volta che si ottiene un Dettagli account.

Penso che opterei per/account/{id}/saldo ... ma forse nominarlo/account/{id}/calculatebalance per indicare che ci vuole del tempo per eseguire questi metodi. E, quindi, è ovvio che il valore è un valore calcolato. Se avessi "diversi" valori calcolati, ripenserei alla mia opinione.

2 centesimi.

+0

Di solito non si hanno azioni nei restanti endpoint. Per azione intendo "calcolare il bilanciamento". La specifica del nome della risorsa è la normale convenzione REST. –