복붙노트

[SPRING] 리포지토리 리소스에 다중 세그먼트 경로를 사용하도록 Spring 데이터 REST를 사용자 정의하는 방법은 무엇입니까?

SPRING

리포지토리 리소스에 다중 세그먼트 경로를 사용하도록 Spring 데이터 REST를 사용자 정의하는 방법은 무엇입니까?

Spring Data JPA와 Spring Data REST를 사용하여 컴포넌트 기반의 CRUD 어플리케이션을 개발 중입니다. 몇 가지 구성 요소가 있습니다. 예를 들어 시스템 구성 요소에는 User 모델과 UserRepository가 있습니다. 구성 요소는 패키지 이름으로 구분됩니다. com.example.app와 같습니다.

따라서 REST API를 더 깨끗하게 보이게하려면 아래와 같이 API URL을 구현해야합니다.

호스트 : 8080 / /

예를 들면

호스트 : 8080 / system / users

나는 저장소에서 다음을 수행했다.

@RepositoryRestResource(collectionResourceRel = "users", path = "system/users")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {
   ...
}

http : // localhost : 8080로 이동하면 다음과 같이 생성됩니다.

{
   "_links": {
   "users": {
   "href": "http://localhost:8080/system/users{?page,size,sort}",
    "templated": true
},
...

하지만 http : // localhost : 8080 / system / users로 이동하면

오류가 발생했습니다.

참고 : 경로를 시스템 사용자에게 매핑 한 경우 제대로 작동하지만 시스템 / 사용자와 같은 경로에 /를 사용하면 오류가 발생하여 오류가 발생합니다.

해결법

  1. ==============================

    1.지원되지 않습니다.

    지원되지 않습니다.

    일반적으로 말해서 : URL 디자인에 집중하지 마십시오. URI의 구조는 정의에 따라 REST 클라이언트와 관련이 없습니다.

    (Roy Fielding - 건축 스타일과 네트워크 기반 소프트웨어 아키텍처 설계 - 섹션 6.2.4)

    그러한 기준을 따르는 경우 관계 이름 선택, 노출하는 리소스에 대한 표현 디자인 등

    즉, 현재 찾고있는 것은 지원되지 않습니다. 이 기능을 추가하는 것이 가치 있다고 생각한다면 (필자가 위에 주어진 인수로 인한 것이 아니라고 생각합니다.), 우리의 버그 추적기에서 티켓을여십시오.

    Spring MVC 매핑이 작동하는 방식과 특히 단일 경로 세그먼트와 비 특이 경로 세그먼트 매핑의 조합이 약간의 모호성을 유발할 수 있으므로 구현하기가 매우 까다 롭습니다. 이 모든 요구 사항으로 인해이 요청이 처리되지 않을 수 있습니다.

  2. ==============================

    2.나는 이것 (또는 : 비슷한) 질문 stackoverflow에 이미 여기에 대답했다 생각합니다.

    나는 이것 (또는 : 비슷한) 질문 stackoverflow에 이미 여기에 대답했다 생각합니다.

    사용자 정의 RepositoryRestMvcConfiguration 클래스를 사용하여 기본 URI를 설정하십시오.

  3. from https://stackoverflow.com/questions/30396953/how-to-customize-spring-data-rest-to-use-a-multi-segment-path-for-a-repository-r by cc-by-sa and MIT license