REST URL 能否将 UI 呈现提示作为元数据发回?
Can REST URLs send back UI rendering hints as metadata?
我找不到明确的文档提到 UI 渲染提示是否可以作为 REST 元数据发回。首先,什么都可以归类为REST元数据?当然,属性的数据类型可以是元数据,但是表示属性是单值还是多值的表示提示也可以描述为元数据吗? "ishidden" 和 "isReadOnly" 呢?根据我的理解,min/max/regexp/fixed 值之类的信息可以作为元数据使用,但不确定与我上面提到的表示提示相关的任何内容是否适合 REST 元数据?任何指针都会有最大的帮助。
谢谢,
稻田
老实说,您可以自由地将您想要的负载发送回 REST 客户端。但是,我不确定始终使用这些 UI-oriented 元数据是否是个好主意。事实上,您也可以拥有使用数据而不会出现 UI 问题的应用程序。
您可以实施一种机制,让您 select 在内容协商中 return 将元数据级别 return 发送给 REST 客户端(Conneg 基于 header Accept
) 以类似于 OData 所做的方式。下面是一个示例:
GET serviceRoot/People
Accept: application/json;odata.metadata=minimal
您可以想象 header Accept
的以下值:
- 无元数据:application/json;元数据=none
- 结构元数据(属性 类型,...):application/json;元数据=最小
- 验证元数据(用于确定属性的预期值):application/json;元数据=验证
- UI 呈现元数据(只读,...):application/json;元数据=呈现
然后您可以按如下所述构建内容:
{
"property1": "value",
// Structural
"property1@metadata": {
"type": "string"
},
"property2": 10,
// Structural + validation
"property2@metadata": {
"type": "integer"
"minValue": 2,
"maxValue": 15
},
"property3": 10,
// Structural + ui rendering
"property3@metadata": {
"type": "integer"
"minValue": 2,
"maxValue": 15,
"readOnly": true,
"hidden": false
}
}
如果您想了解如何在 OData v4 中处理元数据,可以使用来自 odata.org 的以下链接:
- 基础教程 - http://www.odata.org/getting-started/basic-tutorial/
- 高级教程 - http://www.odata.org/getting-started/advanced-tutorial/
编辑:在评论中,inf3rno 下划线 header Prefer
也可用于描述所需的元级别。
下面是一个使用示例:
GET serviceRoot/People
Accept: application/json
Prefer: metadata=rendering
希望对你有帮助,
蒂埃里
我找不到明确的文档提到 UI 渲染提示是否可以作为 REST 元数据发回。首先,什么都可以归类为REST元数据?当然,属性的数据类型可以是元数据,但是表示属性是单值还是多值的表示提示也可以描述为元数据吗? "ishidden" 和 "isReadOnly" 呢?根据我的理解,min/max/regexp/fixed 值之类的信息可以作为元数据使用,但不确定与我上面提到的表示提示相关的任何内容是否适合 REST 元数据?任何指针都会有最大的帮助。
谢谢,
稻田
老实说,您可以自由地将您想要的负载发送回 REST 客户端。但是,我不确定始终使用这些 UI-oriented 元数据是否是个好主意。事实上,您也可以拥有使用数据而不会出现 UI 问题的应用程序。
您可以实施一种机制,让您 select 在内容协商中 return 将元数据级别 return 发送给 REST 客户端(Conneg 基于 header Accept
) 以类似于 OData 所做的方式。下面是一个示例:
GET serviceRoot/People
Accept: application/json;odata.metadata=minimal
您可以想象 header Accept
的以下值:
- 无元数据:application/json;元数据=none
- 结构元数据(属性 类型,...):application/json;元数据=最小
- 验证元数据(用于确定属性的预期值):application/json;元数据=验证
- UI 呈现元数据(只读,...):application/json;元数据=呈现
然后您可以按如下所述构建内容:
{
"property1": "value",
// Structural
"property1@metadata": {
"type": "string"
},
"property2": 10,
// Structural + validation
"property2@metadata": {
"type": "integer"
"minValue": 2,
"maxValue": 15
},
"property3": 10,
// Structural + ui rendering
"property3@metadata": {
"type": "integer"
"minValue": 2,
"maxValue": 15,
"readOnly": true,
"hidden": false
}
}
如果您想了解如何在 OData v4 中处理元数据,可以使用来自 odata.org 的以下链接:
- 基础教程 - http://www.odata.org/getting-started/basic-tutorial/
- 高级教程 - http://www.odata.org/getting-started/advanced-tutorial/
编辑:在评论中,inf3rno 下划线 header Prefer
也可用于描述所需的元级别。
下面是一个使用示例:
GET serviceRoot/People
Accept: application/json
Prefer: metadata=rendering
希望对你有帮助, 蒂埃里