본문으로 바로가기
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일 경우 타는 부분