HAL
HAL 全称 Hypertext Application Language(超文本应用语言),是一种 HATEOAS 的实现方式。
与普通 RESTful 不同,对于每一个资源 HAL 又将其细分成状态(State)、链接(Links)和子资源(Embedded Resource)三个标准部分
Note
这里的资源状态是指资源本身固有的属性,链接定义了与当前资源相关的一组资源的链接集合,而子资源则描述当前资源的具体内容,提供嵌套资源的定义。
HAL+JSON 风格请求和响应示例代码:
//请求
GET http://api.example.com/users/**
//响应
Content-Type: application/json
{
_links: {
self: {
href: "/users/**"
}
}
"id": "user1",
"name": "**",
"email": "**@email.com"
}
相较于传统 RESTful 这里多了 _links 属性,其中有一个 self.href 链接指向当前 user 资源。
Note
HAL 的出现主要弥补了普通 JSON 格式在 API 的交互不足,让 JSON 更具有自描述性和导航性。