小编Mik*_* SV的帖子

在Spring RESTful服务中使用相同的URL和相同的方法来使用不同的输入JSON格式

我将使用Spring实现RESTful Web服务.让它成为普通的PUT方法,如下所示:

@RequestMapping(method=RequestMethod.PUT, value="/foo")
public @ResponseBody void updateFoo(@RequestBody Foo foo) {
    fooService.update(foo);
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输入JSON格式(如果它对应于Foo类)将成功转换为Foo实例而不需要额外的努力,或者在格式错误的情况下将发出错误.但我想使服务能够使用相同的方法(例如PUT)和相同的URL(例如/ foo)使用两种不同类型的格式.

所以它可能看起来像:

//PUT method #1
@RequestMapping(method=RequestMethod.PUT, value="/foo")
public @ResponseBody void updateFoo(@RequestBody Foo foo) {
    fooService.update(foo);
}

//PUT method #2
@RequestMapping(method=RequestMethod.PUT, value="/foo")
public @ResponseBody void updateFoo(@RequestBody FooExtra fooExtra) {
    fooService.update(fooExtra);
}
Run Code Online (Sandbox Code Playgroud)

Spring转换器尝试转换输入JSON,不仅在Foo中,而且在FooExtra中,并根据输入格式调用相应的PUT方法.

事实上,我试图完全按照上面描述的方式实现它,但没有成功.它甚至可能吗?也许,我需要某种"技巧"?实现这种行为的最佳方式(也是最合适的方式)是什么?当然,我总是可以创建两个不同的URL,但我想知道是否可以使用相同的URL.

java rest spring json spring-mvc

6
推荐指数
1
解决办法
4065
查看次数

标签 统计

java ×1

json ×1

rest ×1

spring ×1

spring-mvc ×1