- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
想象一个 REST 端点 (/employees)
以 JSON HAL 格式提供员工页面。
一名员工居住在一个国家,该国家位于一个大陆。
对于国家和大洲,也有单独的端点。
返回的页面包含典型的 _embedded
包含员工数据的字段。
员工资源还包含嵌套的 country
资源。
这个嵌套country
资源还包含 _links
.
在这种情况下,输出将是:
GET /employees
{
"_embedded": {
"employees": [{
"employee_id": 1
"name": "Mr. X",
"place_name": "London",
"country": {
"alpha2_code": "AU",
"name": "Australia",
"continent": {
"code": "OC",
"name": "Australia",
"_links": {
"self": {
"href": "http://localhost:8077/continents/au"
}
}
},
"_links": {
"self": {
"href": "http://localhost:8077/countries/au"
}
}
},
"_links": {
"self": {
"href": "http://localhost:8077/employees/1"
}
}
},
{
..
}
]
},
"_links": {
"first": {
"href": "http://localhost:8077/employees?page=1&size=10"
},
"self": {
"href": "http://localhost:8077/employees"
},
"next": {
"href": "http://localhost:8077/employees?page=2&size=10"
},
"last": {
"href": "http://localhost:8077/employees?page=8&size=10"
}
},
"page": {
"size": 10,
"total_elements": 71,
"total_pages": 8,
"number": 0
}
}
country
(还有
continent
在
country
中的嵌套,按照 HAL 规范以正确的方式输出。
{
"_embedded": {
"employees": [{
"employee_id": 1
"name": "Mr. X",
"place_name": "London",
"_embedded": {
"country": {
"alpha2_code": "AU",
"name": "Australia",
"_embedded": {
"continent": {
"code": "OC",
"name": "Australia",
"_links": {
"self": {
"href": "http://localhost:8077/continents/au"
}
}
},
}
"_links": {
"self": {
"href": "http://localhost:8077/countries/au"
}
}
}
},
"_links": {
"self": {
"href": "http://localhost:8077/employees/1"
}
}
},
{
..
}
]
},
"_links": {
"first": {
"href": "http://localhost:8077/employees?page=1&size=10"
},
"self": {
"href": "http://localhost:8077/employees"
},
"next": {
"href": "http://localhost:8077/employees?page=2&size=10"
},
"last": {
"href": "http://localhost:8077/employees?page=8&size=10"
}
},
"page": {
"size": 10,
"total_elements": 71,
"total_pages": 8,
"number": 0
}
}
_embedded
资源。
最佳答案
其实HAL spec很清楚何时使用 _embedded
:
Embedded Resources MAY be a full, partial, or inconsistent version of the representation served from the target URI.
_embedded
下的嵌套文档还需要是可链接资源的表示,即它本身需要是一个资源。_embedded
被视为实际资源的预览。除非有嵌套文档的专用资源,否则不要将其放入 _embedded
.如果您倾向于添加 self
链接到嵌套文档,它需要/应该进入 _embedded
._embedded
中使用的 key 之间通常存在连接。以及出现在 _links
中的链接同一份文件。{
"_links" : {
"self" : …,
"customer" : …
},
"items" : [
{
"amount" : …,
"description" : …,
"_links" : {
"product" : …
}
"_embedded" : {
"product" : { … }
}
}
],
"createdDate" : …,
"_embedded" : {
"customer" : {
"firstname" : …,
"lastname" : …
}
}
}
看看如何
items
是直接嵌套在文档中的潜在复杂对象的数组。这意味着没有单独的资源代表这些项目。他们是这个资源的一部分。
customer
另一方面,两者都出现在
_links
中。部分,表明存在与此相关的资源,其语义由
customer
定义意味着在应用领域。同样的
customer
也出现在
_embedded
基本上表明:这是相关资源表示形式的预览。嵌套文档可能与您按照链接获得的内容完全相同。但它也可以是完全不同的形状来满足访问当前资源的客户端的需求。例如。而不是上市
firstname
和
lastname
单独地,嵌入式变体只能包含
displayName
,或地址的简单字符串版本,该地址是实际资源表示中的复杂对象。
product
嵌套在行项目表示中。该项目甚至可能有
description
持久地源自添加它的产品的状态。但是
items.[0]._embedded.product
中列出的内容基本上可以携带有关订单项指向的产品的更深入的信息。但是,当然,该产品并未“包含”在行项目中。
_embedded.$rel.$interestingProperty
首先 - 如果它没有找到它 - 求助于解析链接并寻找
$interestingProperty
那里。这是一个非常标准的实现过程,并允许服务器逐渐将属性移动到
_embedded
避免客户端首先需要查找相关资源。 John Moore 在
this talk 中演示了这种方法(使用 HTML 作为媒体类型,但实际上是相同的模式)。
_embedded
的概念允许您准确地表达这一点。
_embedded
,服务器基本上可以忽略合成字段,只应用对自然字段所做的更改。
关于json - 如何使用 JSON HAL 处理嵌套资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47941703/
最近开始学习MongoDB。今天老师教了我们 mongoexport 命令。在练习时,我遇到了一个典型的问题,包括教练在内的其他同学都没有遇到过。我在我的 Windows 10 机器上使用 Mongo
我是 JSON Schema 的新手,读过什么是 JSON Schema 等等。但我不知道如何将 JSON Schema 链接到 JSON 以针对该 JSON Schema 进行验证。谁能解释一下?
在 xml 中,我可以在另一个 xml 文件中包含一个文件并使用它。如果您的软件从 xml 获取配置文件但没有任何方法来分离配置,如 apache/ngnix(nginx.conf - site-av
我有一个 JSON 对象,其中包含一个本身是 JSON 对象的字符串。我如何反序列化它? 我希望能够做类似的事情: #[derive(Deserialize)] struct B { c: S
考虑以下 JSON { "a": "{\"b\": 12, \"c\": \"test\"}" } 我想定义一个泛型读取 Reads[Outer[T]]对于这种序列化的 Json import
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 11 个月前关闭。 Improve
我的旧项目在 MySQL 中有 Standard JSON 格式的数据。 对于我在 JS (Node.js) 和 DynamoDB 中的全新项目,关于 Standard JSON格式: 是否建议将其转
JSON 值字符串、数字、true、false、null 是否是有效的 JSON? 即,是 true 一个有效的 JSON 文档?还是必须是数组/对象? 一些验证器接受这个(例如 http://jso
我有一个 JSON 字符串,其中一个字段是文本字段。这个文本字段可以包含用户在 UI 中输入的文本,如果他们输入的文本是 JSON 文本,也许是为了说明一些编码,我需要对他们的文本进行编码,以便它不会
我正在通过 IBM MQ 调用处理数据,当由 ColdFusion 10 (10,0,11,285437) 序列化时,0 将作为 +0.0 返回,它会导致无效的 JSON并且无法反序列化。 stPol
我正在从三个数组中生成一个散列,然后尝试构建一个 json。我通过 json object has array 成功了。 require 'json' A = [['A1', 'A2', 'A3'],
我从 API 接收 JSON,响应可以是 30 种类型之一。每种类型都有一组唯一的字段,但所有响应都有一个字段 type 说明它是哪种类型。 我的方法是使用serde .我为每种响应类型创建一个结构并
我正在下载一个 JSON 文件,我已将其检查为带有“https://jsonlint.com”的有效 JSON 到文档目录。然后我打开文件并再次检查,结果显示为无效的 JSON。这怎么可能????这是
我正在尝试根据从 API 接收到的数据动态创建一个 JSON 对象。 收到的示例数据:将数据解码到下面给出的 CiItems 结构中 { "class_name": "test", "
我想从字符串转换为对象。 来自 {"key1": "{\n \"key2\": \"value2\",\n \"key3\": {\n \"key4\": \"value4\"\n }\n
目前我正在使用以下代码将嵌套的 json 转换为扁平化的 json: import ( "fmt" "github.com/nytlabs/gojsonexplode" ) func
我有一个使用来自第三方 API 的数据的应用程序。我需要将 json 解码为一个结构,这需要该结构具有“传入”json 字段的 json 标签。传出的 json 字段具有不同的命名约定,因此我需要不同
我想使用 JSON 架构来验证某些值。我有两个对象,称它们为 trackedItems 和 trackedItemGroups。 trackedItemGroups 是组名称和 trackedItem
考虑以下案例类模式, case class Y (a: String, b: String) case class X (dummy: String, b: Y) 字段b是可选的,我的一些数据集没有字
我正在存储 cat ~/path/to/file/blah | 的输出jq tojson 在一个变量中,稍后在带有 JSON 内容的 curl POST 中使用。它运作良好,但它删除了所有换行符。我知
我是一名优秀的程序员,十分优秀!