SpringBoot
接受 JSON 参数时,是不是都得用个实例对象去接受这个参数;@RequestBody Example example
这样的形式,这就很僵硬,如果用 @RequestBody Map<String, Object> example
可读性又太差,有没有一种方式能接受 JSON 参数,可以直接在 Controller 里直接写明参数的方法?比如 public void abc(Integer abc)
这样的形式的。不胜感激~
1
yangyaofei 2022-01-06 13:46:25 +08:00 1
1. 没有
2. 不应该这么用 3. 实体类直接交给 service 处理对应业务就行了, controller 不应该在这里处理东西 4. 确实会有只需要实体类中的部分值进行某个业务的(如创建), 这个地方有一些解决方案,比如持久化的和前台的不是一个,一对多,再转换. 持久化类进行继承(有弊端也有好处) |
2
constantine008 2022-01-06 14:06:21 +08:00
换个思路 OpenAPI+swagger
|
3
mango88 2022-01-06 15:43:55 +08:00
为啥会觉得僵硬呀 ?
可以定制个参数解析器,关键词: HandlerMethodArgumentResolver 解析 JSON 值,再赋值到方法里其他参数上 |
4
gadfly3173 2022-01-06 17:06:49 +08:00
参数不多且不是必须用 post/put 之类的情况下,用 get 解析 request param 也可以
|
6
clf 2022-01-06 17:19:24 +08:00
所以就是没写方法的注释?
如#3 所说的那样,你可以自定义一个 Resolver ,然后在初始化的时候替换掉默认的 Resolver 。 @RequestBody 对应的是 RequestResponseBodyMethodProcessor ,可以参考一下。 然后弄个类继承 WebMvcConfigurer ,重写 addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers)方法,里面 add 你的 resolver 就行了。类上 @Configuration @EnableWebMvc 注解。 |