在spring中基于请求体将相同的URL映射到不同的方法

时间:2016-04-07 17:50:15

标签: java spring spring-mvc

我想知道是否可以将相同的URL映射到RestController类中的不同方法,仅基于请求正文。例如:

@RequestMapping(value="/delete", method=RequestMethod.POST )
public void delete(@RequestBody String id) {
    //do something
}

@RequestMapping(value="/delete", method=RequestMethod.POST )
public void delete(@RequestBody Book book) {
    //do something
}

请求正文将始终是JSON有效负载。如果它是{"id":"foo"}我希望调用第一个方法。如果请求正文是:

{
    "title":"Spring Guide",
    "author":"John Doe"
}

我希望调用第二种方法。这可能吗?

1 个答案:

答案 0 :(得分:-1)

无法仅通过有效负载进行区分。

根据我在这里做的测试以及M. Deinum和Ali Dehghani的回答,我认为最好的方法是为每个案例设置不同的网址。所以要通过id删除/books/{id},并在主体中使用对象的JSON /books来删除传递对象。感谢所有评论。