Sto provando a progettare lo schema dei dati e l'api riposante per un caso specifico.
Nel mio sistema ho diversi utenti e diversi libri. Ogni libro può avere diversi utenti come autori e allo stesso tempo ogni utente può essere un autore di diversi libri.
Ora la parte difficile, gli utenti sono interessati ad avere un elenco dei loro libri e a far sapere al sistema che sono gli autori, ma è importante che possano anche mantenere privata questa associazione. Quindi un utente può essere l'autore di un libro ma non desidera rendere pubbliche queste informazioni.
Ora una prima soluzione può essere quella di replicare le informazioni dei libri per ogni autore e impostarle come private o pubbliche ma questo non è ciò che voglio. La mia idea era di utilizzare due associazioni nell'entità utente (libri, public_books) in cui il secondo è un sottoinsieme del primo.
Ma un altro problema si presenta con l'api riposante. Non sono sicuro di quale sia un buon modo per esporre questo tipo di dati.
Qualcosa di simile forse?
/users/:id/books
che restituisce un elenco di libri creati con un'ulteriore proprietà booleana ispublic?
Esiste un'idea migliore per gestire questa situazione secondo te?
EDIT: L'API REST deve restituire tutti i libri collegati all'utente e offrire un modo per distinguere tra libri pubblici e privati. Un utente può ovviamente vedere tutti i suoi libri, ma solo i libri pubblici degli altri utenti.
Un'altra cosa necessaria è la possibilità per un utente di cambiare lo stato di uno dei suoi libri. Un libro privato può diventare pubblico e viceversa.