我正在使用Spring Boot和Spring
Rest示例。在此示例中,我传递了自定义标头,如果该值有效,则端点被成功调用,如果自定义标头值不正确,则得到下面的响应,我想使用@ControllerAdvice
ExceptionHandler
将其包装为显示给最终用户。
注意:我经历了[pring mvc-如何将所有错误的请求映射到单个方法,但是在我的情况下,我基于CustomHeader做出决定。
{
"timestamp": "2020-01-28T13:47:16.201+0000",
"status": 404,
"error": "Not Found",
"message": "No message available",
"path": "/employee-data/employee-codes"
}
控制者
@Operation(summary = "Find Employee")
@ApiResponses(value = { @ApiResponse(code = 200, message = "SUCCESS"),
@ApiResponse(code = 500, message = "Internal Server Error") })
@Parameter(in = ParameterIn.HEADER, description = "X-Accept-Version", name = "X-Accept-Version",
content = @Content(schema = @Schema(type = "string", defaultValue = "v1",
allowableValues = {HeaderConst.V1}, implementation = Country.class)))
@GetMapping(value = "/employees/employee-codes", headers = "X-Accept-Version=v1")
public ResponseEntity<Employees> findEmployees(
@RequestParam(required = false) String employeeCd,
@RequestParam(required = false) String firstName,
@RequestParam(required = false) Integer lastName) {
Employees response = employeeService.getEmployees(employeeCd, firstName, lastName);
return new ResponseEntity<>(response, HttpStatus.OK);
}
我已经实现了HttpMessageNotReadableException
和HttpMediaTypeNotSupportedException
和NoHandlerFoundException
,但仍然无法包装此错误。
有什么建议么?
我能够找到解决方案。
# Whether a "NoHandlerFoundException" should be thrown if no Handler was found to process a request.
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
错误处理代码:
@Override
protected ResponseEntity<Object> handleNoHandlerFoundException(NoHandlerFoundException ex, HttpHeaders headers,
HttpStatus status, WebRequest request) {
// custom logic here
return handleExceptionInternal(ex, error, getHeaders(), HttpStatus.BAD_REQUEST, request);
}
有人知道使用包装异常的最佳/最简单方法吗? 我有一个自定义的,用于转换,如果输入超出标准范围,则会引发自定义运行时异常。 这最终被Spring包装在一个中,我可以在我的控制器建议中使用来处理。 但是我必须并使用确定底层异常是否是我感兴趣的类型。此时,我可以使用对但是如果我有一个不同的底层异常,我不知道该怎么办? 如果我重新引发原始异常,我会收到一条令人讨厌的日志消息“调用@ExceptionHan
我找不到一个好的解决方案:在我的Spring Boot应用程序中,作为一个方法,我需要定义一个处理程序,不是针对特定的异常,而是针对由特定异常(即包装异常)引起的任何异常。 例句:有时候我会这样: 我的自定义是我在一些Hibernate EventListener的预更新方法中抛出的异常,直接异常是无法发生持久性。 但是,以下尝试使用我的自定义异常的方法从未达到: 这里有一个类似的线程,答案是错误
本文向大家介绍如何在Java中使用flexjson包装JSON?,包括了如何在Java中使用flexjson包装JSON?的使用技巧和注意事项,需要的朋友参考一下 该Flexjson库 是一个轻量级的 Java库,用于序列化和反序列化的Java bean,映射,数组,并集合 在一个JSON格式。一个JSONSerializer 是执行的Java序列化对象到JSON,默认情况下执行一个主类浅 序列化
未能应用插件[id'com.android.application']需要版本2.10。当前版本是2.8。如果使用gradle包装器,请尝试将d:\android\swiperefreshlistfragment\gradle\wrapper\gradle-wrapper.properties中的distributionUrl编辑为gradle-2.10-all.zip 这个问题出现在分级同步..
我们有一个使用< code>Spring OAuth2的rest API。用户通过身份验证后,所有JSON响应都采用以下格式: 但是,身份验证失败的JSON响应与上述格式不符,因为这是由Spring处理的。 例如,在凭据不正确的情况下,客户端会获得带有JSON响应的HTTP状态代码400,如下所示: 如果用户帐户被锁定,客户端将获得 HTTP 状态代码 400,并按 JSON 响应进行如下操作 所
我使用Spring的@ControllerAdvice和@ExceptionHandler进行异常处理。任何方法都会从Controller中抛出自定义异常,并由相应的@ExceptionHandler处理它。如果发生运行时异常(例如任何HibernateException),那么它将抛出运行时异常,并且我没有任何@ExceptionHandler用于运行时异常。
问题内容: 我正在使用Spring Boot 1.4.1,其中包括。我有一个带有注释的类和带有注释的方法,用于处理服务代码引发的异常。处理这些异常时,我想记录和POST操作请求的一部分,因此我可以看到导致问题的请求正文,在我看来,该问题对于诊断至关重要。 在Spring Docs中,方法的方法签名可以包括多种内容。通常可以从此处通过或获取请求正文,但是如果我的控制器方法像我的所有方法一样解析请求正
我使用的是Spring Boot1.4.1,其中包括Spring-Web-4.3.3。我有一个用注释的类和用注释的方法,以处理服务代码引发的异常。在处理这些异常时,我希望记录作为PUT和POST操作请求的一部分的,这样我就可以看到导致问题的请求体,在我的情况下,这对于诊断至关重要。 在每个Spring文档中,方法的方法签名可以包括各种内容,包括。请求正文通常可以从这里通过或获得,但是如果我的控制器