2017-02-28 48 views
5

Chcę udostępnić dane z bazy danych jako Restful APIs w aplikacji Spring (SpringBoot). Spring Data Rest wydaje się dokładnie pasować do tego celu.Spoczynkowe dane sprężyste - czy istnieje sposób ograniczenia obsługiwanych operacji?

Ta baza danych jest przeznaczona tylko do odczytu dla potrzeb mojej aplikacji. Domyślne zapewnia wszystkie metody HTTP. Czy istnieje konfiguracja, której można użyć do ograniczenia (w zasadzie uniemożliwienia) ujawnienia innych metod?

+3

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. –

Odpowiedz

12

Od docs Wiosna na Hiding repository CRUD methods:

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.

+0

Jeśli to czytasz, pomyśl o głosowaniu na ten bilet. SDR może być niebezpieczny. https://jira.spring.io/browse/DATAREST-1034 – Snekse