API REST - Eager che carica le risorse nidificate

0

Vorrei sapere se sono disposto a caricare correttamente le risorse nidificate nella mia API.

Nella mia app, companies può avere molti technologies e tools . La relazione viene memorizzata nelle tabelle join companies_technologies e companies_tools .

A un endpoint /companies , vorrei restituire tutto companies e il loro technologies e tools come il seguente:

[
  {
    company_name: 'company_1',
    ...
    technologies: [
      {...},
      ...,
      {...}
    ],
    tools: [
      {...},
      ...,
      {...}
    ]
  },
  ..., 
  {
    company_name: 'company_n',
    ...
  }
]

Per restituire 30 società, finisco per fare 61 query.

  • Una query per ottenere un massimo di 30 aziende ( 1 query )
  • Passa in rassegna le aziende per ottenere le tecnologie per ciascuna di esse. ( 30 query )
  • Passa in rassegna le aziende per ottenere gli strumenti per ciascuna di esse. ( 30 query )

Quindi costruisco la risposta e la rimando al client.

Il tempo di risposta è molto alto anche con indici su tutte le chiavi esterne. È inevitabile fare così tante query per il mio progetto API, oppure esiste un approccio alternativo?

    
posta Sung Won Cho 18.08.2016 - 02:37
fonte

1 risposta

2

Se hai veramente bisogno di tutti questi dati per ogni richiesta, puoi quasi certamente recuperarla con una singola query con i join appropriati, quindi massaggiarla nel formato JSON appropriato. Ciò ti farà risparmiare un sacco di tempo di elaborazione.

Tuttavia, sospetto che il tuo consumatore non abbia sempre bisogno di tutti questi dati. Prendi in considerazione la possibilità di fornire opzioni sull'endpoint che consentano loro di richiedere tecnologie e strumenti separatamente per azienda.

    
risposta data 18.08.2016 - 02:44
fonte

Leggi altre domande sui tag