我已经编写了一个测试服务,它只需要一个文件标题作为参数,即testfile。jpg。。所有这一切都是在抛出带有自定义异常html" target="_blank">消息的自定义异常。当我使用“testfile”作为参数时,它工作得很好。。给出400个错误状态代码。如果我使用“测试文件”。它似乎不喜欢那里的扩展,错误状态代码返回为500内部错误。
有人知道我能做些什么来解决这个问题吗?所以当使用扩展名为testfile.jpg的文件时,它会显示正确的400错误状态代码吗?
控制员:
@ApiOperation("Tests")
@RequestMapping(value = {"/testingURL/{test}"}, method = RequestMethod.GET, produces = {MediaType.IMAGE_PNG_VALUE,MediaType.IMAGE_JPEG_VALUE})
@ResponseBody
public ResponseEntity<byte[]> getTestingURL(@PathVariable String test) throws Exception{
return assetStoreService.test(test);
}
服务方式:
public ResponseEntity<byte[]> test(final String test) throws CustomTestException{
if(!test.isEmpty()){
exceptionThrower();
}
TestImage testImage = new TestImage();
return getResponseEntity(testImage);
}
例外Rower:
private void exceptionThrower() throws CustomTestException {
throw new CustomTestException("blahbah");
}
CustomTestException。爪哇:
public class CustomTestException extends Exception {
public CustomTestException(String errorMessage) {
super(errorMessage);
}
}
异常处理程序:
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ExceptionHandler(CustomTestException.class)
protected ResponseEntity handleCustomTestException (HttpServletRequest request, CustomTestException ex){
request.removeAttribute(
HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE);
TestError testError = new TestError(HttpStatus.BAD_REQUEST,ex.getMessage(),ex);
return new ResponseEntity<Object>(testError, new HttpHeaders(), testError.getStatus());
}
下面的一点是删除接受的返回类型(图像),以便它可以返回异常json对象响应:
request.removeAttribute(
HandlerMapping.PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE);
作为最佳实践,这是内容谈判的一部分。如果您仍然想使用扩展,请在应用程序中尝试此功能。属性文件
Springmvc。满意的谈判。偏好路径扩展=true
我为运行时可能发生的各种错误创建了多个自定义异常。为此,我使用@ControllerAdvice注释和全局错误处理程序(如下所述:Spring Boot 异常处理。我还在数据库级别实现了约束(如果这很重要,它是一个SQL Server数据库),并且我有一个表,该表具有插入数据时可能引发的两个不同约束。 我现在想做的是在Spring Boot中为数据库级别的每个约束实现自定义异常,这样我就可以向用户
我的要求是,如果post请求的JSON无效,我将需要发送400个HTTP响应代码,如果任何字段不可解析,返回状态代码将为422。例如,post请求可以是: Dto类提供如下:, 这是发出POST请求的控制器, 如果“金额”是,比如说,“sfdfd”,这不是大小数,我们应该提供422。但如果“金额”为“-12.3343”,则这是约束验证错误,但数据有效且可分析。所以我们不能拥有422。 这是我的异常
问题内容: 我们正在使用Spring MVC + Spring Security + Hibernate创建一个RESTful API。该API可以生成JSON和HTML。做好弹簧安全性的错误处理让我头疼: 身份验证可以通过多种方式进行:BasicAuth,通过POST请求中的不同参数以及通过Web登录。对于每种身份验证机制,在Spring Security xml配置的名称空间元素中声明了一个过
我正在用Spring Boot开发一个rest应用程序。此应用程序有一个自定义筛选器,只允许在某些请求下访问。如果用户需要特定的资源,筛选器将抛出异常。如何在全局级别处理此筛选器中生成的所有异常? 我尝试了注释,但不起作用。
我有一个自定义过滤器,它在使用Spring Cloud Gateway调用实际API之前对每个请求进行身份验证。Spring Cloud中有没有像Spring提供@ControllerAdvision那样集中处理异常的方法?我希望全局处理异常,并从网关返回自定义错误响应。
所有的错误最终都会被 Tango.ErrHandler 进行处理。 你可以自定义你的错误处理方式来替代默认的。例如: var ( prefix = "<html><head>tango</head><body><div>" suffix = fmt.Sprintf("</div><div>version: %s</div></body></html>", tango.Version