0

我想知道 API 链接的以下结构是否与 HATEOAS 兼容?

特别是我不确定 /create endpoint。它应该在入门级,因为用户可以从那里创建一个组,还是可以将它放在 /groups 中?

你对其余的有什么看法?它也应该与 HAL 兼容。

/groups
  /create
  /detail/{groupId}
    /update
    /delete
    /items
  /search{?page,size,sort}
4

1 回答 1

1

HATEOAS(请参阅Richardson 的成熟度模型级别 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),至于项目,您可能最清楚它们只是一个属性还是另一个端点;您甚至可以将它们嵌入到检索组的同一个调用中。

于 2016-06-21T06:43:39.073 回答