【发布时间】:2023-03-29 19:54:01
【问题描述】:
考虑一个场景,我想用现有的 ID 在数据库中创建一条记录。通过这样做,我们得到“500-internal server error”。但我想自定义返回“Id 已存在,无法创建记录”的消息。以下是我的示例现有代码: 控制器类:
@PostMapping(value = "/plans")
public ResponseEntity<ResponseSave> savePostPlanDetails(
@Valid @RequestBody(required = true) Plan plan) throws ParseException {
String planId = plan.getPlanId();
Integer createdId = planDataService.savePlan(plan, planId);
ServiceMessage serviceMessage = ServiceMessage.createCreatedServiceMessage();
return new ResponseEntity<>(ResponseSave.createResponseSave(serviceMessage, createdId), HttpStatus.CREATED);
}
服务等级:
public Integer savePlan(Plan plan, String planId) throws ParseException {
PlanDao findResponse = planDataRepository.findByPlanId(planId);
if (findResponse != null) {
//This line generate 500 error if create with already existing ID.
throw new IllegalArgumentException(PlanSearchEnum.RECORD_ALREADY_EXIST.getValue());
}
PlanDao planDao1 = requestToResponseMapper.panToPlanDao(plan);
PlanDao saveResponse = planDataRepository.save(planDao1);
return saveResponse.getInternalId();
}
邮递员输出:
{
"message": {
"code": "500",
"description": "Unable to process request",
"type": "Internal Server Error"
}
}
在上面的邮递员回复中,我希望描述类似于:“描述”:“Id 已经存在,无法创建记录”,而不是如上所示的一般消息。那么如何做到这一点呢?
【问题讨论】:
标签: java json spring-boot rest postman