REST URL可以将UI呈现提示作为元数据发回吗?

时间:2015-02-24 05:06:11

标签: rest metadata


  我找不到一个明确的文件,提到UI呈现提示是否可以作为REST元数据发回。首先,什么都可归类为REST元数据?当然,属性的数据类型可以是元数据,但是可以呈现提示,例如属性是单值还是多值也可以描述元数据?怎么样" ishidden"和#34; isReadOnly"?根据我的理解,像min / max / regexp / fixed value这样的信息可以作为元数据,但不确定是否有任何与我上面提到的表示提示相关的内容是REST元数据的良好候选者?任何指针都会有很大的帮助。

谢谢,
稻谷

1 个答案:

答案 0 :(得分:1)

诚然,您可以自由地将有效负载中的内容发送回REST客户端。但是我不确定总是使用这些面向UI的元数据是个好主意。事实上,您还可以拥有使用数据而不会出现UI问题的应用程序。

您可以实现一种机制,允许您以与OData相似的方式选择要在内容协商中返回REST客户端的元数据级别(基于标头Accept的连接)。以下是一个示例:

GET serviceRoot/People
Accept: application/json;odata.metadata=minimal

您可以想象标题Accept的以下值:

  • 无元数据:application / json; metadata = none
  • 结构元数据(属性类型,...):application / json; metadata = minimal
  • 验证元数据(用于确定属性的预期值):application / json; metadata = validation
  • UI呈现元数据(readonly,...):application / json; metadata = rendering

然后您可以按如下所述构建内容:

{
    "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中的以下链接:

编辑:在评论中,inf3rno下划线标题Prefer也可用于描述所需的元级别。

以下是一个使用示例:

GET serviceRoot/People
Accept: application/json
Prefer: metadata=rendering

希望它可以帮到你, 亨利