0

我正在使用弹簧休息,我有两种方法

@RequestMapping(value="/",method = RequestMethod.POST)
    public @ResponseBody
    Object test1(HttpServletRequest request) {}

@RequestMapping(value="/",method = RequestMethod.GET)
    public @ResponseBody
    Object test2(HttpServletRequest request) {}

但它无法检测这两种方法。Spring中每个http方法的URL是否必须不同。

4

2 回答 2

3

Spring 可以支持相同 url 的 GET 和 POST。我已经做过很多次了。例如(这是 POST 和 PUT,但区别相同):

@Controller
@RequestMapping(value="player")
public class PlayerController {

    @Autowired
    private PlayerService playerService;

    @RequestMapping(method = RequestMethod.POST)
    @ResponseBody
    public Player createNewPlayer(@RequestBody Player player) {
        return playerService.createNewPlayer(player);
    }

    @RequestMapping(method = RequestMethod.PUT)
    @ResponseBody
    public Player updatePlayer(@RequestBody Player player) {
        return playerService.updatePlayer(player);
    }
}

如果您可以发布您收到的错误消息,也许我们可以帮助您找出问题所在。

于 2013-09-04T04:50:47.900 回答
0

我有点晚了,但我可能对仍然想知道这个概念的人有用。在下面的代码中,我们将收到错误:java.lang.IllegalStateException: Ambiguous mapping.Cannot map 'XXX' method。

@RequestMapping(value="/",method = RequestMethod.POST)
    public @ResponseBody
    Object test1(HttpServletRequest request) {}

@RequestMapping(value="/",method = RequestMethod.GET)
    public @ResponseBody
    Object test2(HttpServletRequest request) {}

发生此错误是因为 RequestHandlerMapper 仅根据 URL 模式而不是方法类型委托请求。因此,如果我们具有相同的 URL 模式,则由于歧义,处理程序映射将无法区分它应该映射到哪个方法。

于 2019-04-11T11:18:06.470 回答