如何在Spring Data Rest中自定义实体的架构

时间:2014-12-03 23:11:10

标签: java spring spring-data-jpa jsonschema spring-data-rest

目前,我可以通过向/ {resource} / schema发出GET请求来获取资源的JSON模式(使用accept:application / schema + json)。

看起来像这样:

{
  "name" : "{java_package}.{resource_class_name}",
  "description" : "rest.description.{resource_class_name}",
  "links" : [ ],
  "properties" : {
    "{property name}" : {
      "type" : "{property_type}",
      "description" : "rest.description.{resource_class_name}.{property_name}",
      "required" : false
    }
  }
}

我无法弄清楚的是如何更改名称,描述或是否需要属性。我希望看起来像这样:

{
  "name" : "{resource_name}",
  "description" : "{custom_description}",
  "links" : [ ],
  "properties" : {
    "{property_name}" : {
      "type" : "{property_type}",
      "description" : "{custom_property_description}",
      "required" : {true or false}
    }
  }
}

我尝试以这种方式注释实体类:

@JsonPropertyDescription(value = "{custom_property_description}")
@JsonProperty(required = {true or false})
private {property_type} {property_name};

但最终结果是一样的。有谁知道如何自定义SDR返回的架构?

1 个答案:

答案 0 :(得分:0)

使用SDR 2.2.X使用org.springframework.data.rest.core.annotation.Description为您的域类和字段添加注释,以查看" description "财产填充。 " 名称"属性已连接到您的域名类和" 必需"属性设置为" false"。

<强> 实施例

package com.test;

@Description("Application")
public class App {

    @Description("Application Name")
    private String name;
}

会产生

{
  "name" : "com.test.App",
  "description" : "Application",
  "links" : [ ],
  "properties" : {
    "name" : {
      "type" : "string",
      "description" : "Application Name",
      "required" : false
    }
  }
}

话虽如此,ticket已向JSON Schema进行架构确认,但尚未实施。