Spring 启动 variable/nested 请求正文
Spring boot variable/nested request body
我正在开发一个 Spring 引导应用程序,它允许用户将逻辑表达式上传到服务器。网络应用程序允许他们直观地创建表达式。 Web 应用程序的结果看起来像这样
{
"id": "someId",
"fullexpression": {
"left": "a",
"operator": "AND",
"right": {
"left": {
"left": "x",
"operator": "AND",
"right": "y",
}
"operator": "OR",
"right": "z"
}
}
}
上面的例子描述了表达式a AND ((x AND y) OR z).
我发现 Baeldung article 上面写着:
the type we annotate with the @RequestBody annotation must correspond to the JSON sent from our client-side controller
如果我对这篇文章的理解是正确的,直接这样做是不可能的。构建允许 RequestBody
像这样嵌套的 Spring Boot rest 控制器的最佳方法是什么?当然,我总是可以在客户端将 JSON 转换为字符串,然后在其余控制器中对其进行解析,但这看起来并不优雅。
将 RequestBody 参数定义为 JsonNode:
public <something> myService(@RequestBody JsonNode jsonNode) {}
您可以使用如下所示的 class:
public class Form {
private String id;
private Expression fullexpression;
// constructor, getters and setters
}
其中 class 表达式具有左侧字段、运算符(字符串)和右侧字段。
由于左右字段的类型可以是String或者Expression,所以我建议你将它们的类型设置为Map或者JsonNode..但是我还没有测试
我正在开发一个 Spring 引导应用程序,它允许用户将逻辑表达式上传到服务器。网络应用程序允许他们直观地创建表达式。 Web 应用程序的结果看起来像这样
{
"id": "someId",
"fullexpression": {
"left": "a",
"operator": "AND",
"right": {
"left": {
"left": "x",
"operator": "AND",
"right": "y",
}
"operator": "OR",
"right": "z"
}
}
}
上面的例子描述了表达式a AND ((x AND y) OR z).
我发现 Baeldung article 上面写着:
the type we annotate with the @RequestBody annotation must correspond to the JSON sent from our client-side controller
如果我对这篇文章的理解是正确的,直接这样做是不可能的。构建允许 RequestBody
像这样嵌套的 Spring Boot rest 控制器的最佳方法是什么?当然,我总是可以在客户端将 JSON 转换为字符串,然后在其余控制器中对其进行解析,但这看起来并不优雅。
将 RequestBody 参数定义为 JsonNode:
public <something> myService(@RequestBody JsonNode jsonNode) {}
您可以使用如下所示的 class:
public class Form {
private String id;
private Expression fullexpression;
// constructor, getters and setters
}
其中 class 表达式具有左侧字段、运算符(字符串)和右侧字段。
由于左右字段的类型可以是String或者Expression,所以我建议你将它们的类型设置为Map