Ausschließen einige Felder des Spring-data-rest-Ressource

Ich versuche, Spring-data-rest mit spring-data-mongodb aussetzen, nur-lese-Ressourcen.

Das problem habe ich begegnete, ist, dass will ich haben unterschiedliche Ansichten von meine Dokumente.
Sagen wir, ich habe einige private Informationen in einem Dokument, das möchte ich nicht setzen Sie Sie öffentlich.

Also versuchte ich mehrere Möglichkeiten.
Ich Lesen Sie diesen Beitrag https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring Beschreibung wie zu verwenden JsonView, um zu wählen Sie die Felder, die wir verfügbar machen möchten.

Habe ich versucht, wie diese :

@RepositoryRestResource(collectionResourceRel = "recommandation", path =    "recommandations")
interface RecommandationRepository extends MongoRepository<Recommendation,   ObjectId> {

@Override
@JsonView(View.Public.class)
Iterable<Recommendation> findAll(Iterable<ObjectId> objectIds);
... //other find methods
}

Es nicht funktioniert. Es ist aber sagte in den Kommentaren : https://spring.io/blog/2014/12/02/latest-jackson-integration-improvements-in-spring#comment-1725671983
Die Antwort deutet auf die Verwendung von @Projektionen
Aber @Projektionen Ergebnis in der url so : ".../Empfehlungen{?Projektion}"
Es bedeutet, dass die Projektion ist nur eine option, um die vollständige Objekt ist immer noch ausgesetzt.

Gibt es eine andere Methode, die hier beschrieben https://github.com/spring-projects/spring-data-rest/wiki/Configuring-the-REST-URL-path
Es empfiehlt @RestResource(exportiert = false) Anmerkung für die Felder, die wir nicht wollen, zu entlarven.

Aber es ist nicht flexibel. Wenn ich Belichten möchte einem öffentlichen nur-lese-API und einen privaten full access API. Diese Anmerkung kann nicht deaktiviert werden pro-api.

Gibt es einen anderen Vorschlag ?

  • Wie wollen Sie unterscheiden zwischen den öffentlichen und privaten APIs? Sie haben zwei repositories für die gleiche Klasse? Wie wäre es mit zwei Klassen dann?
Schreibe einen Kommentar