HTTP POST с помощью Spring HATEOAS - PullRequest
0 голосов
/ 13 июня 2019

У меня есть приложение 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 ?

...