복붙노트

[SPRING] Spring 데이터 나머지 - _embedded에 중첩 된 리소스 포함

SPRING

Spring 데이터 나머지 - _embedded에 중첩 된 리소스 포함

나는 쇼핑 목록을위한 Spring Boot Application을 개발 중이다. 이를 위해 Spring Data Rest를 사용하여 REST API를 통해 엔티티를 내보내십시오.

내 아키텍처는 다음과 같습니다.

나는 ShoppingItem을 가지고있다 :

public class ShoppingItem {
@Id
@GeneratedValue
private Long id;

@ManyToOne
@JoinColumn(name = "articleId", nullable = false)
private Article article;

private Integer number;

private boolean bought;

public ShoppingItem(){
    this.article = null;
    this.number = 0;
    this.bought = false;
}

}

이 쇼핑 항목에는 내 보낸 자료 인 기사가 들어 있습니다.

기사는 다음과 같이 보입니다.

public class Article {

@Id
@GeneratedValue
private Long id;

@Column(unique = true)
private String name;

private Integer price;
}

ShoppingItem을 요청하면 대답은 다음과 같습니다.

{
  id: 94,
  number: 1,
  bought: false,
  _links: {
    self: {
      href: "https://myDomain.tld/api/shoppingItems/94"
    },
    article: {
      href: "https://myDomain.tld/api/shoppingItems/94/article"
    }
  }
}

ShoppingItem을 요청할 때 _embedded에 기사를 포함시킬 수 있습니까?

{
  id: 94,
  number: 1,
  bought: false,
  _links: {
    self: {
      href: "https://myDomain.tld/api/shoppingItems/94"
    },
    article: {
      href: "https://myDomain.tld/api/shoppingItems/94/article"
    }
  },
  _embedded: {
    article: {
      id: '999',
      name: 'someThing',
      price: '1.99'
    }
  }
}

업데이트 1 수락을 사용하는 경우 : application / x-spring-data-verbose + json

응답은 다음과 같습니다.

{
  id: 94
  number: 1
  bought: false
  links: [2]
    0:  {
      rel: "self"
      href: "https://wg.yannic-klem.de/api/shoppingItems/94"
    }-
    1:  {
      rel: "article"
      href: "https://wg.yannic-klem.de/api/shoppingItems/94/article"
    }-
  -
  content: [0]

}

content-List는 항상 비어 있습니다.

업데이트 2 :

내 아키텍처에 대한 자세한 내용은 내 Github 저장소를 참조하십시오. https://github.com/Yannic92/ShoppingList/tree/master/src/main/java/de/klem/shopping

해결법

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

    1.요청을 할 때 Accept 헤더를 추가하십시오 :

    요청을 할 때 Accept 헤더를 추가하십시오 :

    Accept: application/x-spring-data-verbose+json
    

    또한이 게시물에 자세히 설명되어있는 곳을 살펴보십시오.

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

    2.Article에 대한 발췌 부분을 정의하고 다음을 사용하여 저장소에 구성하십시오. 발췌

    Article에 대한 발췌 부분을 정의하고 다음을 사용하여 저장소에 구성하십시오. 발췌

    발췌문을 정의한 자원은 응답의 _embedded 부분에 추가됩니다. 이는 협회의 수집 자원에 적용됩니다.

    자세한 내용은 https://stackoverflow.com/a/30297320/1203628 또는 Spring 데이터 REST 참조 문서를 참조하십시오.

    발췌문은 타겟 유형의 인스턴스 (귀하의 경우 기사)가 _embedded 절 내에서 사용될 때마다 사용됩니다. 따라서 발췌 부분은 리소스 자체가 렌더링되지 않지만 지적되는 모든 곳에서 사용되는 일종의 미리보기입니다. 이는 대개 수집 자원 또는 연관의 경우입니다. Spring Data REST 참고 문서에서이 주제에 대해 더 자세히 읽어보십시오.

  3. from https://stackoverflow.com/questions/29670835/spring-data-rest-include-nested-resource-in-embedded by cc-by-sa and MIT license