簡體   English   中英

如何使用_embedded資源消耗資源

[英]How to consume resource with _embedded resources

我正在嘗試使用Spring Traverson和基本restTemplate來使用Rest Web服務,但是它不起作用...

我使用了一個休息的Web服務,該服務返回:

GET /books/1
ContentType: application/hal+json
{
    "title": "Les Misérables" ,
    "ISBN": "9780685113974",
    "_embedded": {
        "author": {
            "firstName": "Victor" ,
            "lastName": "Hugo" ,
            "born": "18020226",
            "died": "18850522"
        },
        "meta": {
            "type": "classic" ,
            "country": "FR"
        }
    }
}

我想在Java方面有如下資源類:

class Book {
    String title;
    String isbn;
    Author author;
    Meta meta;
}

class Author {
    String firstName;
    String lastName;
    Date born;
    Date died;
}

class Meta {
    String type;
    String country;
}

如何將RestTemplate或Traverson與Resource,Resources或ResourceSupport類一起使用以匹配這些Java對象?

您的結構看起來不太正確。 例如,_embedded被映射到Spring HATEOAS Resources上 ,該資源用於處理資源列表。 但是您的記錄顯示_embedded不包含列表,而只是一個嵌套結構。

您的結構中還具有頂級屬性,這些屬性不會映射到“資源”類型。

如果我要對Author and Book進行建模(略微簡化)並使用Spring Data REST(將作者內聯到書中)將其導出,則將如下所示:

$ curl localhost:8080/books/
{
  "_embedded" : {
    "books" : [ {
      "title" : "Learning Spring Boot",
      "author" : {
        "firstName" : "Greg",
        "lastName" : "Turnquist"
      },
      "_links" : {
        "self" : {
          "href" : "http://localhost:8080/books/1"
        },
        "book" : {
          "href" : "http://localhost:8080/books/1"
        }
      }
    } ]
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/books/"
    },
    "profile" : {
      "href" : "http://localhost:8080/profile/books"
    }
  }
}

如果我讀一本書,記錄將如下所示:

$ curl localhost:8080/books/1
{
  "title" : "Learning Spring Boot",
  "author" : {
    "firstName" : "Greg",
    "lastName" : "Turnquist"
  },
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/books/1"
    },
    "book" : {
      "href" : "http://localhost:8080/books/1"
    }
  }
}

閱讀HAL規范 ,任何_embedded元素都映射到數組上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM