티스토리 뷰
반응형
200 OK 응답뿐만 아니라 404 NOT FOUND 등 다양한 상태 코드를 제공하도록 하기 위해 사용합니다.
예를 들어 아래 코드를 보면 됩니다.
@GetMapping(value = ["/customer/{id}"])
fun getCustomer(@PathVariable id: Int) =
ResponseEntity(customerService.getCustomer(id), HttpStatus.OK)
GetMapping이 기본적으로 HttpStatus.OK를 수행합니다. 이것을 적절하게 바꿔보겠습니다.
GET
@GetMapping(value = ["/customer/{id}"])
fun getCustomer(@PathVariable id: Int) : ResponseEntity<Customer?> {
val customer = customerService.getCustomer(id)
val status = if (customer == null) HttpStatus.NOT_FOUND else HttpStatus.OK
return ResponseEntity(customer, status)
}
고객 정보가 있으면 정보와 200 OK를 응답하고 없으면 404 NOT FOUND를 응답합니다.
POST
@PostMapping(value = ["/customer"])
fun createCustomer(@RequestBody customer: Customer) : ResponseEntity<Unit> {
customerService.createCustomer(customer)
return ResponseEntity(Unit, HttpStatus.CREATED)
}
POST에서는 아무것도 반환하지 않으므로 Unit을 반환하고 201 CREATED를 응답합니다.
DELETE
@DeleteMapping(value = ["/customer/{id}"])
fun deleteCustomer(@PathVariable id: Int) : ResponseEntity<Unit> {
val status = if (customerService.getCustomer(id) != null) {
customerService.deleteCustomer(id)
HttpStatus.OK
} else HttpStatus.NOT_FOUND
return ResponseEntity(Unit, status)
}
DELETE에서도 Unit을 반환하고, 지울 고객의 정보가 없으면 404 NOT FOUND를 응답하고 있으면 200 OK를 응답합니다.
UPDATE ( PUT )
@PutMapping(value = ["/customer/{id}"])
fun updateCustomer(@PathVariable id: Int, @RequestBody customer: Customer) : ResponseEntity<Unit?> {
val status = if (customerService.getCustomer(id) != null) {
customerService.updateCustomer(id, customer)
HttpStatus.ACCEPTED
} else HttpStatus.NOT_FOUND
return ResponseEntity(Unit, status)
// return ResponseEntity<Unit?>(null, status)
}
UPDATE도 Unit을 반환하며, 수정할 고객의 정보가 있으면 수정을 하고 202 ACCEPTED를 응답, 없으면 404 NOT FOUND를 응답합니다.
POST, DELETE, UPDATE에서 Unit을 반환하였습니다.
고객 정보가 없으면 { }를 받게 됩니다.
이것은 객체가 null이어서 빈 응답이 반환된 것입니다.
만약 { } 반환을 하고 싶지 않다면 Unit 대신에 null을 적어주면 됩니다.
return ResponseEntity<Unit?>(null, status)
반응형
'알려주는 이야기 > 스프링 부트' 카테고리의 다른 글
Spring Boot - Rest Api 예외 처리 (0) | 2020.09.08 |
---|---|
Spring Boot - JSON에서 Null 처리 (0) | 2020.09.08 |
Spring Boot - 서비스 레이어로 코드 중복, 결합 제거 (0) | 2020.09.08 |
@PathVariable, @RequestParam (0) | 2020.09.08 |
@RestController (0) | 2020.09.08 |
댓글