Saya menggunakan Spring Boot untuk REST API sederhana dan ingin mengembalikan kode status HTTP yang benar jika ada yang gagal.
@RequestMapping(value="/rawdata/", method = RequestMethod.PUT)
@ResponseBody
@ResponseStatus( HttpStatus.OK )
public RestModel create(@RequestBody String data) {
// code ommitted..
// how do i return a correct status code if something fails?
}
Menjadi baru di Spring dan Spring Boot, pertanyaan dasarnya adalah bagaimana cara mengembalikan kode status yang berbeda ketika ada sesuatu yang baik atau gagal?
sumber
javax.servlet.http.HttpServletResponse
tampaknya tidak semua Kode Statusorg.springframework.http.HttpStatus
memiliki. Jadi, Anda bisa menggunakanHttpStatus.UNPROCESSABLE_ENTITY.value()
untuk meneruskan nilai int ke response.setStatus. Ini juga berfungsi dengan sempurna untuk penanganan kesalahan@ExceptionHandler
.Salah satu cara untuk melakukannya adalah Anda dapat menggunakan ResponseEntity sebagai objek pengembalian.
sumber
Coba kode ini:
sumber
ErrorBean
?Cara yang bagus adalah dengan menggunakan ResponseStatusException dari Spring
Daripada mengembalikan
ResponseEntity
atau serupa, Anda cukup membuangResponseStatusException
dari pengontrol denganHttpStatus
dan sebab, misalnya:atau:
Ini menghasilkan respons ke klien yang berisi status HTTP (mis. 400 Permintaan buruk) dengan isi seperti:
sumber
Jika Anda ingin mengembalikan kode status yang ditentukan khusus, Anda dapat menggunakan ResponseEntity seperti di sini:
CustomHttpStatusValue bisa berupa bilangan bulat apa pun di dalam atau di luar Kode Status HTTP standar.
sumber
Ada berbagai cara untuk mengembalikan kode status, 1: Kelas RestController harus memperluas kelas BaseRest, di kelas BaseRest kita dapat menangani pengecualian dan mengembalikan kode kesalahan yang diharapkan. sebagai contoh :
sumber