这个 API 结构 HATEOAS 兼容吗?
Is this API structure HATEOAS compatible?
我想知道 API 链接的以下结构是否与 HATEOAS 兼容?
特别是我不确定/create endpoint。它应该在入门级别,因为用户可以从那里创建一个组,还是可以将它放在 /groups 中?
你对剩下的有什么看法?它也应该与 HAL 兼容。
/groups
/create
/detail/{groupId}
/update
/delete
/items
/search{?page,size,sort}
HATEOAS(参见 Richardson's Maturity Model level 3)是关于 links 的,因此使用 HAL 浏览器时,它看起来像这样:
根目录:
{
"_links": {
"self": {
"href": "/api/root"
},
"api:group-add": {
"href": "http://apiname:port/api/group"
},
"api:group-search": {
"href": "http://apiname:port/api/group?pageNumber={pageNumber}&pageSize={pageSize}&sort={sort}"
},
"api:group-by-id": {
"href": "http://apiname:port/api/group/id" (OR "href": "http://apiname:port/api/group?id={id}")
}
}
}
add 只是到该端点的 POST,然后您将有 2 个 GET 方法。
然后一旦你深入到一个特定的组(比如#1):
{
"Id" : 1,
"Name" : "test",
"_links": {
"self": {
"href": "/api/group/1" (OR "/api/group?id=1")
},
"edit": {
"href": "http://apiname:port/api/group/1"
},
"api:delete": {
"href": "http://apiname:port/api/group/1"
},
"api:items-query": {
"href": "http://apiname:port/api/bonus?groupId=1"
}
}
}
在这里,编辑只是一个 PUT,然后您需要一个 DELETE(请参阅同一 link 中 REST 的第 2 级),至于这些项目,您可能最了解它们只是一个 属性,或另一个端点;您甚至可以将它们嵌入到检索组的同一个调用中返回。
我想知道 API 链接的以下结构是否与 HATEOAS 兼容?
特别是我不确定/create endpoint。它应该在入门级别,因为用户可以从那里创建一个组,还是可以将它放在 /groups 中?
你对剩下的有什么看法?它也应该与 HAL 兼容。
/groups
/create
/detail/{groupId}
/update
/delete
/items
/search{?page,size,sort}
HATEOAS(参见 Richardson's Maturity Model level 3)是关于 links 的,因此使用 HAL 浏览器时,它看起来像这样:
根目录:
{
"_links": {
"self": {
"href": "/api/root"
},
"api:group-add": {
"href": "http://apiname:port/api/group"
},
"api:group-search": {
"href": "http://apiname:port/api/group?pageNumber={pageNumber}&pageSize={pageSize}&sort={sort}"
},
"api:group-by-id": {
"href": "http://apiname:port/api/group/id" (OR "href": "http://apiname:port/api/group?id={id}")
}
}
}
add 只是到该端点的 POST,然后您将有 2 个 GET 方法。
然后一旦你深入到一个特定的组(比如#1):
{
"Id" : 1,
"Name" : "test",
"_links": {
"self": {
"href": "/api/group/1" (OR "/api/group?id=1")
},
"edit": {
"href": "http://apiname:port/api/group/1"
},
"api:delete": {
"href": "http://apiname:port/api/group/1"
},
"api:items-query": {
"href": "http://apiname:port/api/bonus?groupId=1"
}
}
}
在这里,编辑只是一个 PUT,然后您需要一个 DELETE(请参阅同一 link 中 REST 的第 2 级),至于这些项目,您可能最了解它们只是一个 属性,或另一个端点;您甚至可以将它们嵌入到检索组的同一个调用中返回。