为了账号安全,请及时绑定邮箱和手机立即绑定

处理 ResourceNotFoundException 时如何利用 @ResponseStatus

处理 ResourceNotFoundException 时如何利用 @ResponseStatus

PIPIONE 2022-10-07 16:24:12
我有以下服务等级:@Servicepublic class CitiesServiceImpl implements CitiesService {  @Autowired  private CitiesRepository citiesRepository;  @Override  public City getCityById(Integer cityId) {    return citiesRepository.findById(cityId)            .orElseThrow(ResourceNotFoundException::new);  }}它在我的控制器中使用:@RestController@RequestMapping("/cities")public class CitiesController {  @Autowired  private CitiesService citiesService;  @GetMapping("/{cityId}")  public City readCity(@PathVariable Integer cityId) {    return citiesService.getCityById(cityId);  }  @ExceptionHandler(ResourceNotFoundException.class)  String handleResourceNotFound(Exception e) {    return e.getMessage();  }}因此,当readCity使用不存在的 调用 时cityID,ResourceNotFoundException将抛出 ,然后由handleResourceNotFound异常处理程序处理。但是,处理ResouceNotFoundException完之后,响应中的状态码还是202,即OK。似乎在运行时没有使用@ResponseStatus注释。ResourceNotFoundException这可以通过将 @ResponseStatus(value=HttpStatus.NOT_FOUND) 添加到方法来解决handleResourceNotFound,但是这样的代码是重复的,因为@ResponseStatus注释已经在ResourceNotFoundException.问题:如何利用ResponseStatus注释ResourceNotFoundException而不是添加重复代码?
查看完整描述

1 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

删除它handleResourceNotFound并让框架为您处理它,或者ResponsehandleResourceNotFound方法中正确返回。

通过声明这样的处理程序,您是在说您将处理这种情况,因此框架正在退出。


查看完整回答
反对 回复 2022-10-07
  • 1 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信