2017-02-28 1 views
5

Spring (SpringBoot) 애플리케이션에서 Restful API로 데이터베이스의 데이터를 노출하려고합니다. 봄 데이터 나머지는이 활동의 ​​목적에 맞는 것으로 보입니다.Spring 데이터 나머지 - 지원되는 작업을 제한 할 수있는 방법이 있습니까?

이 데이터베이스는 내 응용 프로그램 요구 사항에 대해 읽기 전용입니다. 기본값은 모든 HTTP 메소드를 제공합니다. 다른 메소드가 노출되는 것을 제한하는 데 사용할 수있는 구성이 있습니까? Hiding repository CRUD methods에 봄 워드 프로세서

+3

가장 편리한 방법은 Spring 보안을 사용하여 GET 요청 이외의 모든 것을 차단하는 것입니다. SDR은이 영역에서 기능을 제공합니다. HTTP 수준에서 처리하지만 http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-sdr.hiding-repository-crud-methods Spring Security를 ​​통해 더 간단합니다. –

답변

12

:

16.2.3. 숨기기 저장소 CRUD 방법

당신이 저장하거나 CrudRepository에 방법을 삭제, 당신은 @RestResource을 사용할 수 있습니다 노출하지 않으려는 경우 (= 거짓 수출)을 끄려는 방법과 배치를 재정 의하여 설정 오버라이드 된 버전의 주석. 예를 들어, HTTP 사용자가 CrudRepository의 delete 메소드를 호출하지 못하도록하려면 모두를 무시하고 재정의 된 메소드에 주석을 추가하십시오.

@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); 
} 

당신이 모두 수출 같은 방법을 삭제 오버라이드 (override)하는 것이 중요 현재 어떤 CRUD 방법 빠른 런타임 성능의 이익에 사용할 determing에 대한 다소 순진 알고리즘을 사용합니다. 현재 은 ID가 인 삭제 버전을 해제 할 수 없지만 엔티티 인스턴스를 사용하는 버전은 내보내는 상태로 두십시오. 시간이 지나면 삭제 방법을 내보낼 수도 있고 내보낼 수도 있습니다. 을 끄려면 버전에 모두 exported = false 주석을 추가해야합니다. 2018로

+0

이 글을 읽는다면이 티켓을 투표 할 생각을해야합니다. SDR은 위험 할 수 있습니다. https://jira.spring.io/browse/DATAREST-1034 – Snekse

관련 문제