Avevo dovuto esporre la chiave primaria che è annotata con @Id nell'entità. Il campo ID è visibile solo sul percorso della risorsa, ma non sul corpo JSON.Come esporre il resourceId con Spring Data Rest
risposta
È possibile configurarlo utilizzando RepositoryRestConfigurerAdapter
a livello di entità.
@Configuration
public class ExposeEntityIdRestConfiguration extends RepositoryRestConfigurerAdapter {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.exposeIdsFor(MyEntity.class);
}
}
Essere consapevoli del fatto che l'utilizzo di questo si sta lavorando contro i principi della primavera-dati-riposo - SDR promuove ipermedia per essere in grado di utilizzare un'API per la navigazione tra le risorse che utilizzano i collegamenti - qui le tue risorse sono identificati e referenziato da collegamenti e quindi gli ID non sono più necessari. L'utilizzo degli ID sul client spinge la complessità della costruzione di collegamenti alle risorse per il client. E il cliente non dovrebbe essere infastidito da questa conoscenza.
La soluzione migliore sarebbe non utilizzare gli ID delle entità e utilizzare i riferimenti di collegamento forniti dall'ipermedia. È sufficiente analizzare il JSON in base alle specifiche HAL utilizzate da Spring Data Rest.
C'è un modo per esporre id di tutte le tue entità in una volta? Ad es. impostazione in config? – thorinkor
Come posso farlo per tutte le entità contemporaneamente? Abbiamo molti pacchetti di cui questo modulo non è a conoscenza. – BigDong