炫意html5
最早CSS3和HTML5移动技术网站之一

如何解决不明确的请求映射?

有一个博客项目。用户可以在文章下发表评论或回复其他用户的评论。这两种操作都是发表新评论,按照REST风格,两种操作的路径都是/comment,请求方法都是POST,但两者的请求参数是不同的,发表新评论需要的参数是文章id和评论内容,回复其他评论需要的参数是被回复的评论id和评论内容。发表新评论的控制器方法的注解是

@PostMapping(path="/comment", params={"articleId","content"})

回复其他用户评论的控制器方法的注解是

@PostMapping(path="/comment", params={"content","repliedCommentId"})

一般情况下网站运行是没有问题。但如果黑客恶意攻击,向/comment路径发送包含articleId、content、repliedCommentId三个参数的Post请求,Spring框架就找不到明确匹配的控制器方法,Spring就会抛出IllegalStateException: Ambiguous handler methods…。

而IllegalStateException太普遍了,很多Spring框架的错误都会抛出这个异常,所以用全局异常处理个人觉得不太合适。

有办法解决这种不明确的请求映射吗?

回答

提供一个思路, 弄一个中间件,在请求抵达视图函数前做入参校验;
按照你贴的代码,实际上两两组合的参数才是正常请求,应该挺好过滤的

炫意HTML5 » 如何解决不明确的请求映射?

Java基础教程Android基础教程