40

我正在使用支持 HATEOAS 的 Spring Data REST。我是这个范式的新手。

GET来自我的 RESTful Web 服务的响应中,我经常在名为_embedded.

我想知道:节点是做什么用的?_embedded它是 REST 规范的一部分吗?还是 HATEOAS 规范的一部分?还是特定于它们的 Spring 实现?

这是 JSON 结果的示例GET http://localhost:8080/mywebservice/features

{
   "_links":
   {
       "search": { "href": "http://localhost:8080/mywebservice/features/search" }
   },
   "_embedded":
   {
       "features":
       [
           {
               "feature": "GROUND",
               "name": "Terreno",
               "data_type": "String",
               "_links":
               {
                   "self"  : { "href": "http://localhost:8080/mywebservice/features/GROUND" },
                   "values": { "href": "http://localhost:8080/mywebservice/features/GROUND }
               }
           },

           ...

       ]
   }
}

我注意到我几乎总是_embedded在响应中有节点:如果我请求一个集合,但即使通过搜索请求单个资源(例如使用GET http://localhost:8080/mywebservice/persons/search/findByEmail?email=example@example@.com)。

_embedded仅当请求是针对特定资源时(例如在执行GET http://localhost:8080/mywebservice/features/GROUND.

4

1 回答 1

45

既没有 REST 也没有 HATEOAS 规范。如果您愿意,两者都只是概念或建筑风格。_embeddedHAL 格式的一部分。

它旨在嵌入(原文如此!)资源,否则只会返回它们的 URI。例如GET http://localhost:8080/mywebservice/features,应该只返回一个 URI 列表,例如,如果需要,您必须自己http://localhost:8080/mywebservice/features/GROUND加载每个。Feature通过利用_embedded所有Feature资源嵌入到响应中,因此您不必单独加载它们。

于 2014-12-11T14:06:26.903 回答