带有Spring HATEOAS的HTTP POST

问题描述 投票:0回答:1

我有一个Spring Boot应用程序,正在使用Spring HATEOAS提供REST服务。

我有我的资源和ResourceAssemblers。在ResourceAssemblers中,会发生到资源的映射(ResourceAssemblerSupport中的toResource方法)。因此,我可以毫无问题地处理所有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"])]

我做错了什么?是否应该在RequestBody中使用额外的DTO而不是Resource?使用Spring HATEOAS发出POST请求的最佳方法是什么?

java spring spring-hateoas
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.