如何使用JavaScript / AngularJS访问_embedded资源中的HAL _links

时间:2016-12-17 22:43:39

标签: javascript angularjs spring-hateoas

我很欣赏有几个库可以使用HAL格式的HATEOAS链接,但我希望了解更多关于访问_embedded资源及其最基本的_links - 或者我想我应该说天真的方式。

举个例子,我有以下“usersResource”($ http)Spring HATEOAS输出:

{  
   "_embedded":{  
      "userList":[  
         {  
            "username":"admin",
            "roles":[  
               "ADMIN"
            ],
            "_links":{  
               "self":{  
                  "href":"http://localhost:8081/users/admin"
               },
               "password":{  
                  "href":"http://localhost:8081/users/admin/password"
               },
               "delete":{  
                  "href":"http://localhost:8081/users/admin"
               }
            }
         }
      ]
   },

   "_links":{  
      "self":{  
         "href":"http://localhost:8081/users"
      },
      "create":{  
         "href":"http://localhost:8081/users"
      }
   }
}

如果我运行像usersResource。$ hasEmbedded(“userList”)或usersResource。$ hasLink(“create”)之类的简单操作,我会毫无疑问地运行。

如果我然后尝试像usersResource那样冒险的东西。$ request()。$ get(“userList”)我得到一个资源对象,但我正在努力以任何有意义的方式使用该对象。

例如,如果我想检查管理员用户是否存在“密码”linkrel,是否有任何方法可以使用返回的资源对象并在其上调用$ hasLink?

感谢您的评论!

1 个答案:

答案 0 :(得分:0)

所以无论如何,我后来才注意到usersResource返回的对象。$ request()。$ get(“userList”)调用是一个数组。因此,只需循环遍历数组即可获得$ hasLink等方法。在我的情况下,我只需要到达第一个[索引0]对象。这就是诀窍:

usersResource.$request().$get("userList")
            .then(function (users) {

                vm.users = users;

                console.log("$hasLink 'delete'");
                console.log(users[0].$hasLink("delete")); //return true

                }
            );