Как я могу документировать ссылки в дочерних документах с помощью Spring REST Docs?
Учитывая следующий документ JSON:
{
"links": {
"alpha": "http://example.com/alpha",
"beta": "http://example.com/beta"
}
}
Я могу задокументировать links
, реализовав собственный LinkExtractor, как предлагается в reference docs (у меня есть рабочая реализация, которая очень похожа на HalLinkExtractor а>):
mockMvc.perform(get("/"))
.andDo(document("root-resource",
links(customLinkExtractor(),
linkWithRel("alpha").description("Link to the Alpha resource"),
linkWithRel("beta").description("Link to the Beta resource")
)
));
Однако мой документ JSON содержит links
вложенных документов в других местах, например
{
"links": {
"alpha": "http://example.com/alpha",
"beta": "http://example.com/beta",
},
"foo": {
"links": {
"gamma": "https://gamma.com/",
"delta": "https://delta.com/"
}
}
}
Как я могу задокументировать links
документ, связанный с foo
суб-документом? В идеале хотелось бы сделать что-то вроде:
mockMvc.perform(get("/"))
.andDo(document("root-resource",
links(customLinkExtractor(),
linkWithRel("alpha").description("Link to the Alpha resource"),
linkWithRel("beta").description("Link to the Beta resource")
),
links(jsonPath("$.foo"),
customLinkExtractor(),
linkWithRel("gamma").description("Link to the Gamma resource"),
linkWithRel("delta").description("Link to the Delta resource")
)
));
Естественно, это не работает, поскольку jsonPath(..)
метода не существует. Какие еще варианты доступны?
Я предполагаю, что та же проблема возникает, если вы используете HalLinkExtractor
и пытаетесь задокументировать ссылки в субдокументе _embedded
(см. Пример в draft-kelly-json-hal).