本文主要是介绍Stackoverflow(1)-根据RequestBody的内容来区分使用哪个资源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 如果使用Spring,可以通过@RequestBody将请求体的json转换为Java对象,但如果URI相同,而请求体的内容不同,应该怎么办?
- 问题来源(stackoverflow):
- Spring @RequestBody without using a pojo?
- 稍微研究了一下,如果将@RequestBody指定为Map,那么请求体(键、值)会存储到Map对象中
- 案例:
- 发送POST请求,虽然URI相同,但是请求体却不同
- 不过,携带了一个名为type的共同数据,并通过type的值来判别不同的情况
- 这次准备了两个type的值:concert和trip
- 控制器的实现:
- 在控制器的实现中,指定 @RequestBody 为 Map<String, Object> 类型
- 通过指定 Map,可以将请求体以键值对的形式存储
- 查看 type 键的值,以此判断是哪一种类型的请求,并将请求转换为相应的类
- 在转换过程中使用了 Jackson 的 ObjectMapper 类进行转换
- 这里,我们将其转换为相应类的对象,输出到标准输出并结束
- 尝试发送 concert 的请求
- 结果的标准输出
- 尝试发送 trip 的请求
- 结果的标准输出
- 所以正确地将其转换为对应的类是可能的
- 整体代码:
这篇关于Stackoverflow(1)-根据RequestBody的内容来区分使用哪个资源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!