REST URL是否可以将UI呈现提示作为元数据发送回




我找不到一个明确的文档提到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

最新更新