我找不到一个明确的文档提到UI呈现提示是否可以作为REST元数据发送回来。首先,什么可以归类为REST元数据?当然,属性的数据类型可以是元数据,但表示提示(如属性是单值还是多值)也可以描述为元数据吗?"ishidden"one_answers"isReadOnly"呢?根据我的理解,像min/max/regexp/fixed value这样的信息可以作为元数据,但不确定是否有任何与演示提示相关的信息(如我上面提到的)是REST元数据的好候选者?任何指示都将是最大的帮助。
谢谢,
Paddy
老实说,您可以自由地将负载中所需的内容发送回REST客户端。然而,我不确定始终使用这些面向UI的元数据是否是个好主意。事实上,您还可以让应用程序在不存在UI问题的情况下使用数据。
您可以实现一种机制,让您在内容协商中选择要返回到REST客户端的元数据级别(基于标头Accept
的Conneg),其方式与OData类似。下面是一个示例:
GET serviceRoot/People
Accept: application/json;odata.metadata=minimal
您可以想象标题Accept
:的以下值
- 没有元数据:application/json;元数据=无
- 结构元数据(属性类型,…):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/
EDIT:在注释中,标题Prefer
的inf3rno下划线也可用于描述所需的元级别
下面是一个使用示例:
GET serviceRoot/People
Accept: application/json
Prefer: metadata=rendering
希望它能帮助你,Thierry