1

我在一个小型 SDR POC 项目中工作,我们决定使用 JSON 模式,因为它对我们的目的更有意义,因为我们正在尝试开发一个理解超媒体并动态创建部分视图的客户端,但我m 在使用 JSON 模式查找我的实体的所有超媒体元数据时遇到了麻烦。

这些是我正在使用的实体

@Entity
public class Book {
    (...)
 
    @OneToMany(mappedBy="book")
    @JsonManagedReference
    private Set<Page> pages;
}


@Entity
public class Page {
 
    (...)
 
    @ManyToOne
    @JsonBackReference
    private Book book;
 
}

当我使用接受标头值作为“application/schema+json”在 /profile/Books 上执行 GET 时:

    curl -H 'Accept:application/schema+json' http://localhost:8080/profile/books

我收到这个输出:

{
   "title": "Book",
   "properties":    {
      "pages":       {
         "title": "Pages",
         "readOnly": false,
         "type": "string",
         "format": "uri"
      },
      "name":       {
         "title": "Name",
         "readOnly": false,
         "type": "string"
      }
   },
   "definitions": {},
   "type": "object",
   "$schema": "http://json-schema.org/draft-04/schema#"
}

此 JSON 模式输出没有 Book 实体的所有 CRUD 操作的链接,也没有指向相关实体(如页面或元数据)的链接来定义其属性。

/profile 提供的默认 ALPS 输出 ( https://datatracker.ietf.org/doc/html/draft-amundsen-richardson-foster-alps-01 ) 不够有意义,因为它没有显示所有可能的操作链接实体,也不是特定类型。

/books的 HAL 输出 ( https://datatracker.ietf.org/doc/html/draft-kelly-json-hal-07 ) 描述了所有书籍实例的链接及其与其他实体的交互链接,但没有关于元数据.

在 SDR 中为实体输出 JSON 模式元数据的正确方法是什么?有什么方法可以从 SDR 资源生成 JSON 超模式( https://datatracker.ietf.org/doc/html/draft-luff-json-hyper-schema-00 )?

4

0 回答 0