java – 在同一方法上使用GET POST的RestController?

前端之家收集整理的这篇文章主要介绍了java – 在同一方法上使用GET POST的RestController?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我想使用spring-mvc创建一个方法并在其上配置GET POST:

@RestController
public class MyServlet {
    @RequestMapping(value = "test",method = {RequestMethod.GET,RequestMethod.POST})
    public void test(@Valid MyReq req) {
          //MyReq contains some params
    }
}

问题:使用上面的代码,任何POST请求都会导致一个空的MyReq对象.

如果我将方法签名更改为@RequestBody @Valid MyReq req,则帖子有效,但GET请求失败.

如果bean被用作输入参数,那么就不可能在同一个方法上一起使用get和post吗?

最佳答案
您问题的最佳解决方案似乎是这样的:

@RestController
public class MyServlet {
    @RequestMapping(value = "test",method = {RequestMethod.GET})
    public void testGet(@Valid @RequestParam("foo") String foo) {
          doStuff(foo)
    }
    @RequestMapping(value = "test",method = {RequestMethod.POST})
    public void testPost(@Valid @RequestBody MyReq req) {
          doStuff(req.getFoo());
    }
}

您可以根据接收方式以不同方式处理请求数据,并调用相同的方法来执行业务逻辑.

猜你在找的Spring相关文章