Spring Data Rest:如何创建所需的json架构属性?

时间:2015-02-02 18:11:55

标签: java json jackson jsonschema spring-data-rest

从阅读another question开始,我了解到Spring Data Rest在/{resourceName}/schema公开了一个JSON模式。例如:

GET http://localhost:8080/members/schema
Accept : application/schema+json
{
    "name": "org.jxc876.model.Member",
    "description": "rest.description.member",
    "links": [],
    "properties": {
        "id": {
            "type": "long",
            "description": "rest.description.member.id",
            "required": false
        },
        "alias": {
            "type": "string",
            "description": "rest.description.member.alias",
            "required": false
        },
        "name": {
            "type": "string",
            "description": "rest.description.member.name",
            "required": false
        }
    }
}

我想表明某些字段是必需的。我最初尝试使用Bean Validation注释(@NotNull)和Jackson(@JacksonProperty)注释,但似乎都没有触发标记。

注意:我使用的是Spring Data Rest 2.2.1

1 个答案:

答案 0 :(得分:1)

我查看了源代码,发现:

  • RepositorySchemaController - 映射到/ {repository} / schema
  • PersistentEntityToJsonSchemaConverter
    • 包含创建Json架构的convert(Object,TypeDescriptor,TypeDescriptor)方法
    • 使用另一个类JsonSchema及其嵌套的内部类(Property)
    • 该属性包含3个字段:类型,说明,必需
    • 看起来构造函数调用是硬编码的,总是使用false:new Property(type, message, false)

我想我应该扩展PersistentEntityToJsonSchemaConverter并覆盖convert方法,然后覆盖控制器并调用我的自定义JsonSchemaConverter。