私は小さな SDR POC プロジェクトに取り組んでいます。このプロジェクトでは、ハイパーメディアを理解し、ビューの一部を動的に作成するクライアントを開発しようとしているため、JSON スキーマを使用することにしましたが、目的にとってより意味があるためです。 JSON スキーマを使用してエンティティのすべてのハイパーメディア メタデータを見つけるのに苦労しています。
これらは私が使用しているエンティティです
@Entity
public class Book {
(...)
@OneToMany(mappedBy="book")
@JsonManagedReference
private Set<Page> pages;
}
@Entity
public class Page {
(...)
@ManyToOne
@JsonBackReference
private Book book;
}
Accept ヘッダー値を「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 )を生成できる方法はありますか?