如何在REST API Controller中将请求主体强制转换为所需的实体

时间:2015-09-09 14:20:06

标签: java spring spring-mvc spring-boot

我的动机是在REST API中编写一个泛型保存方法。用户将在请求正文中发送实体,以便根据请求映射字符串将转换为实体

为什么我想要这个,因为在我的情况下,有多达50-60个实体,根据我的理解,我必须编写许多控制器。

我正在努力实现这样的目标。

@RequestMapping(value = "/{entity}", method = RequestMethod.POST)
@ResponseBody
public Object performSave(@PathVariable String entity
        @RequestBody Object entity)  {

    switch(entity){

             case "employee"
              return employeeService.save((Employee)entity);

             case "Boss"
              return bossService.save((Boss)entity);

              default:
               return null;

             }

但我无法做到这一点,因为Spring无法将JSON请求转换为java.lang.Object。

我有什么可能的解决方案?

如果我的问题没有意义,请告诉我,我会提供更多详情。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的,因为底层映射器需要解析json的具体类。该参数只是对实际对象的引用。

需要注意的是,当使用REST并从中获益时,不仅要使用简单的URL进行调用。必须将API设计为RESTfull。我建议你在沿着这条路走下去之前阅读这个概念。