gpt4 book ai didi

java - Spring Boot 使用 Json 作为请求参数而不是实体/模型

转载 作者:行者123 更新时间:2023-12-03 19:42:11 26 4
gpt4 key购买 nike

我们公司正计划将我们的微服务技术切换到 Spring Boot。作为一项举措,我做了一些高级阅读并记下了它的潜在影响和等效语法。我还开始移植我们拥有的最小服务作为副项目。

阻碍我进步的一个问题是试图将我们的 Json 请求/响应交换转换为 Spring Boot。

这是一个代码示例:(这是Nutz框架,供不认识的人使用)

@POST
@At // These two lines are equivalent to @PostMapping("/create")
@AdaptBy(type=JsonAdapter.class)
public Object create(@Param("param_1") String param1, @Param("param_2) int param2) {
MyModel1 myModel1 = new MyModel1(param1);
MyModel2 myModel2 = new MyModel2(param2);
myRepository1.create(myMode12);
myRepository2.create(myModel2);
return new MyJsonResponse();
}

在 PostMan 或任何其他 REST 客户端上,我只需传递 POST:

{
"param_1" : "test",
"param_2" : 1
}

我在 Spring Boot 中做到了这一点:

@PostMapping("/create")
public Object create(@RequestParam("param_1") String param1, @RequestParam("param_2) int param2) {
MyModel1 myModel1 = new MyModel1(param1);
MyModel2 myModel2 = new MyModel2(param2);
myRepository1.create(myMode12);
myRepository2.create(myModel2);
return new MyJsonResponse();
}

我不确定如何在此处执行与 JsonAdapter 类似的操作。 Spring 无法识别我传递的数据。

我试过了,但基于示例,它希望 Json 参数具有实体的形式。

@RequestMapping(path="/wallet", consumes="application/json", produces="application/json")

但我只有在做这样的事情时才能让它工作:

public Object (@RequestBody MyModel1 model1) {}

我的问题是 MyModel1 可能不一定包含我的 json 数据所具有的字段/参数。

Nutz 非常有用的一点是,如果我删除 JsonAdapter,它的行为就像 spring 中的常规表单请求端点。

我在 Stack 中找不到答案,或者如果可能的话,我对它的称呼不同于现有的 spring 开发人员对它的称呼。

我们的老板希望我们(不切实际地)实现这些变化,而不是强制前端开发人员适应这些变化。 (自治和所有爵士乐)。如果这是不可避免的,对此合理的解释是什么?

最佳答案

在这种情况下,你可以使用 Map 类来读取输入的 json,比如

@PostMapping("/create")
public Object create(@RequestBody Map<String, ?> input) {
sout(input.get("param1")) // cast to String, int, ..
}

关于java - Spring Boot 使用 Json 作为请求参数而不是实体/模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49574086/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com