Spring新增控制器后Data Rest端点出现请求方法不支持异常
问题原因与解决方案
核心问题:路径冲突
- Spring Data Rest会基于标注
@RepositoryRestResource的DAO自动生成标准REST端点,默认规则是将实体名转换为复数形式作为路径(比如PlanDeEntrenamiento会映射到/api/planes)。 - 你手动创建的
@RequestMapping("/api/planes")的RestController会优先抢占这个路径的所有请求处理权,但你的控制器里并没有实现PUT、POST、PATCH这些方法,所以当你调用Data Rest原本的端点时,请求被拦截后找不到对应处理方法,直接抛出HttpRequestMethodNotSupportedException。
解决办法(任选其一)
- 修改自定义控制器路径:把自定义RestController的
@RequestMapping改成非重叠路径,比如@RequestMapping("/api/planes/custom"),这样Data Rest的默认端点可以正常处理/api/planes下的请求,你的自定义接口走新路径。 - 缩小自定义接口路径范围:不要用
@RequestMapping覆盖整个/api/planes,而是给每个自定义接口指定更具体的子路径,比如@GetMapping("/api/planes/export"),避免影响Data Rest的默认端点。 - 移除不必要的自定义控制器:如果这个控制器没有特殊业务逻辑,直接删除它,让Data Rest自动生成的端点正常工作。
验证方式
临时注释掉自定义的RestController,再测试Data Rest的PUT/POST/PATCH端点,确认是否能正常响应,以此验证路径冲突的判断。
内容的提问来源于stack exchange,提问作者Ignacio Ovidio Muñoz Nicolás
相关产品推荐
相关产品推荐

