我有一个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请求的最佳方法是什么?