You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring MVC实现简易REST服务遇404错误,求概念性指导

关于你的REST服务实现概念的确认

先直接说核心问题:你访问/buscar/Interstellar出现404,本质是对REST请求参数传递的概念理解有偏差,下面帮你梳理几个关键概念点:


1. @RequestParam 与 @PathVariable 的核心区别

你的REST控制器用了@RequestParam String Title,这意味着参数是通过查询字符串来传递的,正确的访问URL应该是:

/buscar?title=Interstellar

而你尝试访问的/buscar/Interstellar是把参数放在了URL路径中,这种方式需要用@PathVariable来接收参数,这是两种完全不同的参数传递方式,也是你拿到404的主要原因。

2. 请求映射的冲突风险

你原有MVC控制器也定义了@RequestMapping("/buscar")的GET请求,虽然一个返回视图(ModelAndView),一个返回JSON(ResponseEntity),但它们的请求路径和HTTP方法完全一致。Spring在处理这种映射冲突时,可能会出现不可预期的优先级问题,这是REST服务实现中需要避免的概念性问题——同一个请求路径+方法应该唯一映射到一个处理器。

3. 参数名称的绑定规则

你的REST控制器中参数名为Title(大写首字母),而原有MVC控制器用的是小写title。Spring默认会按照参数名称来绑定请求参数,但如果你的项目编译时没有保留参数名(比如用了Java 8之前的编译规则,或者没开-parameters编译选项),可能会导致参数绑定失败。虽然这不是当前404的原因,但也是REST参数绑定中的重要概念。

4. Repository返回值的类型匹配

你的FilmRepository中findByTitle返回的是Iterable<Film>,但REST控制器中把它强转为List<Film>。虽然Iterable的实现类(比如Spring Data JPA返回的List)可以强转,但从概念上来说,更规范的做法是让Repository直接返回List<Film>,避免不必要的类型转换。


内容的提问来源于stack exchange,提问作者M.K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:04:58