11 votes

Spring data rest - Existe-t-il un moyen de restreindre les opérations prises en charge ?

Je veux exposer des données provenant d'une base de données en tant qu'API de type Restful dans une application Spring(SpringBoot). Spring Data Rest semble être parfaitement adapté à cette activité.

Cette base de données est en lecture seule pour les besoins de mon application. La valeur par défaut fournit toutes les méthodes HTTP. Existe-t-il une configuration que je peux utiliser pour restreindre (en fait, empêcher) l'exposition des autres méthodes ?

22voto

Søren Kirkegård Points 236

Dans les documents de Spring sur Cacher les méthodes CRUD du référentiel :

16.2.3. Masquage des méthodes CRUD du référentiel

I CrudRepository, vous pouvez utiliser le paramètre @RestResource(exported = false) en surchargeant la méthode que vous voulez désactiver et en plaçant l'annotation sur la version surchargée. Par exemple, pour empêcher les utilisateurs HTTP d'invoquer les méthodes de suppression de CrudRepository, remplacez-les toutes et ajoutez l'annotation aux méthodes remplacées.

@RepositoryRestResource(path = "people", rel = "people")
interface PersonRepository extends CrudRepository<Person, Long> {

  @Override
  @RestResource(exported = false)
  void delete(Long id);

  @Override
  @RestResource(exported = false)
  void delete(Person entity);
}

Il est important que vous surchargez les deux méthodes de suppression comme l'exportateur utilise actuellement un algorithme quelque peu naïf pour déterminer quelle méthode CRUD à utiliser dans l'intérêt de performances d'exécution plus rapides. Il n'est pas actuellement possible de désactiver la version de delete qui prend un ID mais laisser exportée la version qui prend une instance d'entité. [ ] Pour l'instant, vous pouvez exporter ou non les méthodes de suppression. Si vous Si vous voulez les désactiver, gardez à l'esprit que vous devez annoter les deux versions avec exported = false.

7voto

Snekse Points 2525

Depuis le début de l'année 2018, il existe désormais le possibilité de n'exposer que les méthodes du référentiel explicitement déclarées pour l'exposition ( DATAREST-1176 )

Voir RepositoryRestConfiguration

A L'exportation false au niveau du type ne permet pas de remplacer l'exportation true au niveau de la méthode. billet ( DATAREST-1034 ) a été ouvert, mais fermé en tant que double de DATAREST-1176 . Oliver Gierke a déclaré :

Je vais résoudre ce problème comme étant corrigé par rapport à la version de DATAREST-1176 de mais n'hésitez pas à rouvrir le dossier si vous avez besoin de quelque chose d'autre.

Ils ne sont pas des copies exactes et la fonctionnalité décrite dans 1034 aurait été plus facile à utiliser, mais il y a au moins quelques options maintenant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X