【发布时间】:2018-09-09 11:24:06
【问题描述】:
我们公司正计划将我们的微服务技术切换到 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 开发人员的称呼不同。
我们的老板希望我们(不切实际地)实施这些更改,而不会强迫前端开发人员适应这些更改。 (自治和所有爵士乐)。如果这是不可避免的,那么合理的解释是什么?
【问题讨论】:
标签: java json spring spring-boot jackson