猿问

自定义正文错误消息 - Spring boot REST

我正在尝试自定义我的正文错误消息。


我的springboot版本是2.1.5.RELEASE


我要这个:


{

"This should be application specific"

}

但我收到这个:


{

    "timestamp": "2019-05-24T15:47:10.872+0000",

    "status": 500,

    "error": "Internal Server Error",

    "message": "Not Found (404)",

    "path": "/github/gifojhuinh4w5"

}

我的异常类是:


@ControllerAdvice

public class AppExceptionHandler extends ResponseEntityExceptionHandler {


    @ExceptionHandler(Exception.class)

    protected ResponseEntity<Object> handleConflict(Exception ex, WebRequest request) {

        String bodyOfResponse = "This should be application specific";

        return handleExceptionInternal(ex, bodyOfResponse,

                new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR, request);

    }

}

我的班级捕获异常


@Controller

@EnableAutoConfiguration

public class GitHub {


    @RequestMapping(value ="/github/{usuario}", produces = "application/json; charset=UTF-8")

    @ResponseBody

    public ResponseEntity<Object> quantidadeRepositorios(@PathVariable(value = "usuario")String usuario) throws IOException {


        HashMap<String, Integer> map = new HashMap<>();

        RepositoryService service = new RepositoryService();

        GitHubClient client = new GitHubClient();

        Gson gson = new Gson();

        client.setOAuth2Token("key");


        map.put("Total",service.getRepositories(usuario).size()); // exception captured here


        return new ResponseEntity<>(gson.toJson(map), HttpStatus.OK);

    }

}


慕标5832272
浏览 96回答 1
1回答

智慧大石

当 ExceptionHandler 捕获到异常时,构建一个响应实体并返回它,如下所示。创建一个 ErrorResponseDTO 对象并为其设置消息。public class ErrorResponseDTO {&nbsp; &nbsp; private String errorMessage;}在异常处理程序中,返回该 dto 对象。&nbsp; &nbsp; @ExceptionHandler(Exception.class)&nbsp; &nbsp; protected ResponseEntity<Object> handleConflict(Exception ex, WebRequest request) {&nbsp; &nbsp; &nbsp; &nbsp; ErrorResponseDTO errorDTO = new ErrorResponseDTO();&nbsp; &nbsp; &nbsp; &nbsp; errorDTO.setErrorMessage("This should be application specific");&nbsp; &nbsp; &nbsp; &nbsp; return new ResponseEntity<>(errorDTO, HttpStatus.INTERNAL_SERVER_ERROR);&nbsp; &nbsp; }这将为您提供您正在寻找的有效载荷。{"This should be application specific"}
随时随地看视频慕课网APP

相关分类

Java
我要回答