У меня есть приложение Spring Boot, и я использую Spring HATEOAS для предоставления услуг REST.
У меня есть мои Ресурсы и Ресурсные Ассемблеры. В ResourceAssemblers происходит сопоставление с ресурсом (метод toResource из ResourceAssemblerSupport). Так что я могу обрабатывать все запросы GET без проблем.
Теперь я хочу опубликовать некоторые данные. В RequestBody я ожидаю также Resource, а в ResourceAssembler я добавил дополнительный метод (toModel) для сопоставления с моделью домена.
Но дело в том, что Ресурс имеет Ссылки. Если я хочу отправить данные через Swagger в примере блока значений, он показывает модель, как показано ниже
"person": {
"_links": [
{
"deprecation": "string",
"href": "string",
"hreflang": "string",
"media": "string",
"rel": "string",
"templated": true,
"title": "string",
"type": "string"
}
],
"field1": "string",
"field2": "string",
"field3": "string",
"field4": "string",
"field5": 0,
"field6": "string"
}
Если я выполню, есть исключение:
JSON parse error: Expected relation name; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Expected relation name
at [Source: (PushbackInputStream); line: 3, column: 5] (through reference chain:rest.resource.PersonResource["_links"])]
Что я делаю не так? Должен ли я использовать дополнительный DTO в RequestBody вместо Resource? Каков наилучший способ сделать POST-запрос, используя Spring HATEOAS ?