我想知道API链接的以下结构是否与HATEOAS兼容?
特别是我不确定/创建端点。它应该在入门级别,因为用户可以从那里创建一个组,还是可以将它放在/ groups中?
您对其他人的看法是什么?它也应该是HAL兼容的。
Author:
jx:area(lastCell="A3")
jx:grid(lastCell="A3" headers="headers" data="data" areas=[A2:A2, A3:A3]
formatCells="String:A3,Integer:B3,Long:B3,Short:B3,Double:B3,Float:B3,BigDecimal:B3")
答案 0 :(得分:1)
HATEOAS(参见Richardson's Maturity Model level 3)完全是关于链接的,所以使用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}")
}
}
}
添加只是对该端点的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(参见相同链接中的REST的第2级),对于这些项目,如果它们只是一个属性,你可能最清楚或其他终点;你甚至可以将它们嵌入到同一个检索组的电话中。