春季启动一些路径变量丢失,但返回404
问题描述:
我是一个初学者的启动。代码如下春季启动一些路径变量丢失,但返回404
@RestController
@RequestMapping("/channel")
public class ChannelController
{
@GetMapping("/getId/{participantId}/{walletType}")
Map<String,Object> getChannelId(@PathVariable Integer participantId , @PathVariable Integer walletType){
return demoDAOImpl.getChannel(participantId, walletType);
}
}
当我打http://localhost:8080/channel/getId///
,它返回默认白色标签错误页面,其中指出
有意外的错误(类型=未找到,状态= 404)。
这里我很困惑。我认为Spring MVC应该抛出一个MissingPathVariableException
。为什么它响应404响应,找不到资源?
答
基础上,你的URL映射:你不能留空白,如 “///” 它必须是 “/数字/数字/”
答
我猜你在问什么是定制异常。那么你需要的是提供一个处理程序,你可以简单地扩展抽象类ResponseEntityExceptionHandler并覆盖handleMissingPathVariable方法。
一个例子:
@Override
protected ResponseEntity<Object> handleMissingPathVariable(MissingPathVariableException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
String error = ex.getParameter() + " parameter is missing";
ErrorMessageHandler error =message(HttpStatus.BAD_REQUEST, ex.toString(), error) ;
return new ResponseEntity<Object>(error, new HttpHeaders(), HttpStatus.BAD_REQUEST);
}
我使用的引导1.5.6,THX – aeromic
这是什么'PathVariableMissingException'你说的?为什么要抛出? –
对于输入错误,MissingPathVariableException是一个Spring内置异常,“通常这意味着URI模板与方法参数中声明的路径变量名称不匹配。”(来自Spring原始注释)。 – aeromic