关于 java:Spring Data Rest:如何使 json 模式属性成为必需? | 珊瑚贝

Spring Data Rest: How can I make a json schema property required?


通过阅读另一个问题,我了解到 Spring Data Rest 在 /{resourceName}/schema 处公开了一个 JSON 模式。例如:

1
2
GET http://localhost:8080/members/schema
Accept : application/schema+json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
   “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


我查看了源代码,发现:

  • RepositorySchemaController – 映射到 /{repository}/schema
  • PersistentEntityToJsonSchemaConverter

    • 包含一个创建 Json 模式的 convert(Object, TypeDescriptor, TypeDescriptor) 方法
    • 使用另一个类 JsonSchema 及其嵌套的内部类 (Property)
    • 该属性包含 3 个字段:类型、描述、必填
    • 看起来构造函数调用被硬编码为始终使用 false: new Property(type, message, false)

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

  • SDR 生成的 schema 不符合 JSON Schema。然而,JIRA 请求支持 JSON Schema 和 Hyper Schema,这是正确的方法。我建议您对票进行投票/评论以将其推到队列中。
  • 你好,迈克,你试过了吗?如果是这样,请告诉我们您的经验,无论这是否可能。


来源:https://www.codenong.com/28284037/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8678.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?