package com.example.basic_kotlin_2025.controller.response
import com.example.basic_kotlin_2025.model.http.UserRequest
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/api/response")
class ResponseApiController {
// 1. get 4xx
// http://localhost:8080/api/response
@GetMapping("/get-mapping")
fun getMapping(@RequestParam age: Int?): ResponseEntity<String> { //age 값이 없을수도 있다.
// 1. age > 20 -> 400 error
if(age == null){
return ResponseEntity.status(400).body("age 값이 누락되었습니다.")
}
// 2. age < 20 -> 400 error
if(age < 20){
return ResponseEntity.status(400).body("age 값은 20보다 커야 합니다.")
}
//return ResponseEntity.ok("OK")
}
}
- 만약 이러한 스타일의 api를 kotlin스럽게 코딩을 한다면 아래 코드 처럼 변경할수 있다.
package com.example.basic_kotlin_2025.controller.response
import com.example.basic_kotlin_2025.model.http.UserRequest
import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.DeleteMapping
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.PutMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/api/response")
class ResponseApiController {
// 1. get 4xx
// http://localhost:8080/api/response
@GetMapping("/get-mapping")
fun getMapping(@RequestParam age: Int?): ResponseEntity<String> { //age 값이 없을수도 있다.
return age?.let{
if(age < 20){
return ResponseEntity.status(400).body("age 값은 20보다 커야 합니다.")
}
ResponseEntity.ok("OK")
// age not null
}?: kotlin.run {
//age is null
return ResponseEntity.status(400).body("age 값이 누락되었습니다.")
}
//return ResponseEntity.ok("OK")
}
}
return age?.let{
if(age < 20){
return ResponseEntity.status(400).body("age 값은 20보다 커야 합니다.")
}
ResponseEntity.ok("OK")
// age not null
}
- 이 코드는 age값이 null이 아닐경우 타는 부분
?: kotlin.run {
//age is null
return ResponseEntity.status(400).body("age 값이 누락되었습니다.")
}
- 이 코드는 age값이 null일 경우 타는 부분