如何使用 JavaScript / AngularJS 访问 _embedded 资源中的 HAL _links
How to access HAL _links within _embedded resources with JavaScript / AngularJS
我很欣赏有几个库可以使用 HAL 格式的 HATEOAS linkrels,但我很想了解更多关于访问 _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") 这样简单的东西,我可以毫无问题地得到 true。
如果我再尝试一些更冒险的事情,比如 usersResource.$request().$get("userList") 我会得到一个资源对象,但我很难以任何有意义的方式使用该对象。
例如,如果我想检查我的管理员用户是否存在 "password" linkrel,有什么方法可以使用返回的资源对象并对其调用 $hasLink 吗?
感谢评论!
所以无论如何,我后来才注意到 usersResource.$request().$get("userList") 调用返回的对象是一个数组。那么这只是循环遍历数组以获取 $hasLink 等方法的问题。在我的例子中,我只需要到达第一个 [index 0] 对象。这成功了:
usersResource.$request().$get("userList")
.then(function (users) {
vm.users = users;
console.log("$hasLink 'delete'");
console.log(users[0].$hasLink("delete")); //return true
}
);
我很欣赏有几个库可以使用 HAL 格式的 HATEOAS linkrels,但我很想了解更多关于访问 _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") 这样简单的东西,我可以毫无问题地得到 true。
如果我再尝试一些更冒险的事情,比如 usersResource.$request().$get("userList") 我会得到一个资源对象,但我很难以任何有意义的方式使用该对象。
例如,如果我想检查我的管理员用户是否存在 "password" linkrel,有什么方法可以使用返回的资源对象并对其调用 $hasLink 吗?
感谢评论!
所以无论如何,我后来才注意到 usersResource.$request().$get("userList") 调用返回的对象是一个数组。那么这只是循环遍历数组以获取 $hasLink 等方法的问题。在我的例子中,我只需要到达第一个 [index 0] 对象。这成功了:
usersResource.$request().$get("userList")
.then(function (users) {
vm.users = users;
console.log("$hasLink 'delete'");
console.log(users[0].$hasLink("delete")); //return true
}
);