Nella mia applicazione, ho una risorsa A che è super class e A1 , A2 che eredita A e altre proprietà che sono specifiche per loro. A non può esistere da solo, deve essere A1 o A2. Questo è un classico esempio di schema gerarchico. Voglio progettare un'API che restituirà la risorsa A con le sue proprietà di sottoclasse. La nostra applicazione è attualmente progettata come due tabelle di database separate A1 e A2 e le loro chiavi primarie sono numeri di sequenza di incremento automatico. Quindi, se devo recuperare una risorsa di type 1, il percorso dell'API deve essere /A/{A1-id}?type=1 . Non mi piace passare type come parametro di query perché è la parte di una chiave che identifica la risorsa e non è un filtro. Sulla base del type , l'applicazione saprà se deve interrogare la tabella A1 o A2 per restituire i dati.
- Non voglio avere numeri di sequenza che iniziano con numeri diversi per entrambe le tabelle.
- Ho preso in considerazione la traduzione di proprietà comuni nella tabella
Acon ID singolo per entrambi i tipi.A1eA2diventeranno solo tabelle di associazione. Ma questo cambierà molto codice. - Considerato anche la conversione dell'ID della sequenza in entrambe le tabelle in UUID e l'applicazione interrogherà sempre
A1eA2ogni volta che riceve una richiesta, ma sembra che il livello sia ancora richiesto quando l'aggiornamento è completato o dovrebbe trovare il prima la tabella e poi aggiorna la tabella in query separate invece di aggiornare direttamente la tabella.
Qual è il modo migliore per risolvere questo? Possiamo avere /A/{id}/{typeid} per evitare di apportare molte modifiche al codice? So che non siamo puri RESTful perché questa API è per Angular MVC e non sarà esposta a utenti esterni.