Rumah  >  Artikel  >  Java  >  Bagaimana untuk Mengembalikan Ralat \"Bad Request\" HTTP 400 dalam Kaedah Spring MVC @ResponseBody?

Bagaimana untuk Mengembalikan Ralat \"Bad Request\" HTTP 400 dalam Kaedah Spring MVC @ResponseBody?

Patricia Arquette
Patricia Arquetteasal
2024-11-06 02:02:02133semak imbas

How to Return an HTTP 400

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, dengan T ialah jenis respons yang dijangkakan. Ini membolehkan anda memanfaatkan penghitungan HttpStatus untuk menentukan kod status HTTP:

<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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn