16.2.3. Ukrywanie repozytorium metod CRUD
Jeśli nie chcemy narazić zapisać lub usunąć metodę na CrudRepository, można użyć @RestResource (eksportowane = false) ustawienie poprzez nadpisanie metody, które chcesz wyłączyć i wprowadzania Adnotacja w zastąpionej wersji. Na przykład, aby uniemożliwić użytkownikom HTTP wywoływanie metod usuwania CrudRepository, należy zastąpić wszystkie z nich i dodać adnotację do przerobionych metod.
@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);
}
Jest ważne, aby przesłonić metody usuwania zarówno jako eksportera obecnie wykorzystuje algorytm nieco naiwne za określanie która metoda CRUD do wykorzystania w interesie wyższą wydajność wykonawczego. Obecnie nie jest możliwe wyłączenie wersji usuwania, która pobiera identyfikator , ale pozostawienie wyeksportowanej wersji, która pobiera instancję jednostki. Dla czasu możesz albo wyeksportować metody usuwania, albo nie. Jeśli chcesz je wyłączyć, pamiętaj, że musisz opatrzyć komentarzami obie wersje z wyeksportowanym = fałsz.
Najwygodniejszym sposobem byłoby użycie zabezpieczenia Spring, aby zablokować wszystko inne niż żądania GET. SDR zapewnia funkcjonalność w tym obszarze: http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-sdr.hiding-repository-rrud-methods jednak obsługa na poziomie HTTP poprzez Spring Security jest prostsze. –