Cara Mengendalikan Ralat HTTP dalam Spring MVC @ResponseBody Methods
Masalah:
Bila menggunakan Spring MVC dengan pendekatan @ResponseBody, bagaimanakah kaedah boleh bertindak balas dengan ralat "permintaan buruk" HTTP 400 jika syarat tertentu tidak dipenuhi?
Penyelesaian:
Pendekatan Asal:
Kod asal cuba mengembalikan String jika syarat tidak dipenuhi, yang tidak dapat dilaksanakan kerana @ResponseBody menjangkakan objek ResponseEntity:
<code class="java">@ResponseBody public String match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { // TODO: how to respond with e.g. 400 "bad request"? } return json; }</code>
Penyelesaian:
Tukar jenis pulangan kaedah kepada ResponseEntity
<code class="java">@ResponseBody public ResponseEntity<String> match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { return new ResponseEntity<>(HttpStatus.BAD_REQUEST); } return new ResponseEntity<>(json, HttpStatus.OK); }</code>
Untuk alternatif yang lebih bersih selepas Spring 4.1, gunakan kaedah pembantu dalam ResponseEntity:
<code class="java">@ResponseBody public ResponseEntity<String> match(@PathVariable String matchId) { String json = matchService.getMatchJson(matchId); if (json == null) { return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); } return ResponseEntity.ok(json); }</code>
Pendekatan ini membolehkan pengembalian kod status HTTP yang sesuai dan kandungan berdasarkan hasil pelaksanaan.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Ralat \"Bad Request\" HTTP 400 dalam Kaedah Spring MVC @ResponseBody?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!