gpt4 book ai didi

java - 在 Spring Boot 中使用自定义异常处理时出现 .jpg 500 错误?

转载 作者:行者123 更新时间:2023-12-01 21:59:39 26 4
gpt4 key购买 nike

我编写了一个测试服务,它只接受文件标题作为参数,即 testfile.jpg ..所有这一切都是用自定义异常消息抛出我的自定义异常。当我使用“testfile”作为参数时,它工作正常..给出 400 错误状态代码。如果我使用“testfile.jpg”,它似乎不喜欢其中的扩展名,并且错误状态代码会返回为 500 内部错误。

有人知道我可以做什么来解决这个问题吗?因此,当使用带有扩展名的文件(即 testfile.jpg)时,它会显示正确的 400 错误状态代码?

Controller :

    @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);
}

异常抛出者:

    private void exceptionThrower() throws CustomTestException {
throw new CustomTestException("blahbah");
}

CustomTestException.java:

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);

最佳答案

作为最佳实践,这不属于内容谈判的一部分。如果您仍然想使用扩展,请在 application.properties 文件中尝试此操作

spring.mvc.contentnegotiation.favor-path-extension=true

关于java - 在 Spring Boot 中使用自定义异常处理时出现 .jpg 500 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58713720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com