春のブートレストにはまったく新しいもので、サービスを使用するクライアントへの応答を処理する方法と方法については質問があります。spring boot rest ResponseEntity responses
@PreAuthorize("hasAuthority('ROLE_USER')")
@GetMapping("distance/{id}")
public ResponseEntity<?> getDistanceById(@PathVariable("id") Integer id) {
log.info("getDistanceById");
Distance distance = distanceService.getDistanceById(id);
if (distance == null){
return new ResponseEntity<CustomErrorMsg>(new CustomErrorMsg("Distance ID " + id + " Not Found"),HttpStatus.NOT_FOUND);
}
return new ResponseEntity<Distance>(distance, HttpStatus.OK);
}
CustomErrorMsgはそれのコンストラクタに文字列を設定し、単純なクラスです:現在、私は、データベースクエリで発見されていないレコードの場合を処理するため、次のコントローラのコードを持っています。
これが最善のアプローチですか? ControllerAdviceベースのクラスはより良いaproachですか?上記のコードは、許可なく呼び出されたときに403の応答を送信するため、この質問をしてください。それがどのように起こっているのか、それがNOT FOUND状態で使用できるのかを理解したいと思います。
@PreAuthorizeのため、403はSpringフレームワークによって送信されます。 Not foundの場合、例外ハンドラアドバイスを使用してこれを行うことができます – pvpkiran