Come progettare API REST con proprietà complicate?

-3

Ho bisogno di progettare una risorsa API restful ed è una risorsa piuttosto complicata in quanto ho bisogno di dettagli su altre risorse per definire la mia proprietà.

Attualmente ho 3 soluzioni.

  1. Creare la risorsa correlata come una proprietà finché non ho il Ho bisogno di dettagli granulari

    • Pro: efficiente
    • Contro: rompere i principi di apertura / chiusura in quanto dovremo modificare la risorsa correlata esistente o duplicarla.
  2. Creazione di una risorsa piatta che definisce le proprietà da altre risorsa.

    • Pro: semplice
    • Contro: inefficiente poiché molte informazioni verranno duplicate.
  3. Simile al # 1 ma invece di aggiungere calcoli come proprietà alla risorsa correlata, creare un riferimento ad essi.

    • Pro: efficiente e consente di utilizzare la risorsa correlata effettiva senza modificarla.
    • Contro: relazioni complesse.

Risorsa (soluzione n. 1)

  • I calcoli

    • RelatedItem - > RelatedSubItem - > RelatedSubSubItem - > Calcolo # 1, Calcolo n. 2, calcolo n. 3
    • RelatedItem - > RelatedSubItem - > RelatedSubSubItem - > Calcolo n. 4, calcolo n. 4, calcolo n. 5

Risorsa (soluzione n. 2)

  • I calcoli

    • Proprietà di calcolo n. 1
    • RelatedItemDetail
    • RelatedSubItemDetail
    • RelatedSubSubItemDetail

    • Proprietà di calcolo n. 2

    • RelatedItemDetail
    • RelatedSubItemDetail
    • RelatedSubSubItemDetail

    • Proprietà di calcolo n. 3

    • RelatedItemDetail
    • RelatedSubItemDetail
    • RelatedSubSubItemDetail

    ...

Risorsa (soluzione n. 3)

  • I calcoli

    • RelatedItem - > RelatedSubItem - > RelatedSubSubItem - > ID # 1
    • RelatedItem - > RelatedSubItem - > RelatedSubSubItem - > ID # 2
    • Calcolo n. 1 - > ID # 1
    • Calcolo n. 2 - > ID # 1
    • Calcolo n. 3 - > ID # 1
    • Calcolo n. 4 - > ID # 1
    • Calcolo n. 5 - > ID # 2
    • Calcolo n. 6 - > ID # 3
posta MichaelChan 16.10.2017 - 00:43
fonte

1 risposta

-1

Grazie per i commenti sull'utilizzo dei diversi approcci.

Alla fine abbiamo deciso di creare una struttura di dati con le associazioni corrette anziché utilizzare l'elemento correlato e modificarli. Abbiamo creato una versione personalizzata dell'oggetto, quindi è chiaro che non è lo stesso oggetto, ma lo ha riutilizzato dove appropriato (AssociatedSubSubItem).

CustomRelatedItem - > CustomRelatedSubItem - > AssociatedSubSubItem (Proprietà), Calcoli (# 1, # 2, # 3) (Proprietà)

    
risposta data 18.10.2017 - 02:01
fonte

Leggi altre domande sui tag