当前位置: 首页 > 知识库问答 >
问题:

500错误与. jpg当使用自定义异常处理Spring引导?

唐焕
2023-03-14

我已经编写了一个测试服务,它只需要一个文件标题作为参数,即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);

共有1个答案

蒋嘉颖
2023-03-14

作为最佳实践,这是内容谈判的一部分。如果您仍然想使用扩展,请在应用程序中尝试此功能。属性文件

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