我正在使用lambda函数部署springboot应用程序。请找到以下样本。
控制器
@RequestMapping(method = RequestMethod.GET, value = "/bugnlow/findByRegionId/{regionId}", produces = "application/json")
public ResponseEntity<List<Bunglow>> findAllBunglowsByRegionId(@PathVariable int regionId, @RequestParam int page, @RequestParam int size) {
Page<Bunglow> bunglows = bunglowsService.findAllBunglowsByRegionId(regionId, page, size);
if (bunglows.getContent().size() == 0){
return ResponseEntity.notFound().build();
}
return ResponseEntity.ok(bunglows.getContent());
}
服务
if the "regionid" is invalid, I am throwing a runtime exception that contains message "region id is invalid".
throw new RuntimeException(Constant.INVALID_REGION_ID);
通过发送无效的区域ID,我在本地测试时收到以下响应。
[1]{
"timestamp": 1519577956092,
"status": 500,
"error": "Internal Server Error",
"exception": "java.lang.RuntimeException",
"message": "Region Id is invalid",
"path": "/***/bugnlow/findByRegionId/343333"
}
我使用lambda函数在应用程序AWS上部署。当我将请求从AWS API网关发送到已部署的应用程序时,我收到以下错误的Amazon响应标头。
[2] Request: /bugnlow/findByRegionId/342324?page=0&size=5 Status: 500 Latency: 166 ms Response Body
{ "message": "Internal server error" }
在特定端点中,已为错误500配置了集成响应。但未使用将内容类型配置为application / json的模板。
我可以通过
在控制器类中设置它来获取本地化错误ResponseEntity<?>
但是,List Bunglow不会在Swagger UI中显示为示例响应值。
如果有人可以帮助我,这是一个很好的帮助。
由于
答案 0 :(得分:0)
我可以通过使用
创建一个类来解决我的问题@ControllerAdvice
并使用
处理异常@ExceptionHandler
我需要验证并回复错误的每一点,我创建了一个自定义异常&#34; BunglowCustomExceptionResponse&#34;并在Advice类&#34; BunglowControllerAdvice&#34;中捕获异常。然后发送带有错误请求响应的异常消息的响应,如下所示。
@ControllerAdvice
public class BunglowControllerAdvice {
@ExceptionHandler
public ResponseEntity handleCustomBunglowException(Exception e){
logger.info("***Exception occurred :" + e.getLocalizedMessage());
return new ResponseEntity<BunglowCustomExceptionResponse>(new
BunglowCustomExceptionResponse(e.getLocalizedMessage()), HttpStatus.BAD_REQUEST);
}
}
然后,我能够获得类似于下面的预期响应,错误的请求状态代码为400。
{"responseMessage": "error message"}
我不知道这是最好的方法,但能够解决我的问题。无论如何,非常感谢您的观看,并试图帮助我。