Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

PUT, Request Body, ResponseBody 본문

인프런/[인프런] Kotlin으로 개발하는 Spring Boot Web MVC

PUT, Request Body, ResponseBody

Seung__ 2022. 4. 24. 15:03

1. @PutMapping


@RestController
@RequestMapping("/api")
class PutApiController {

    @PutMapping("/put-mapping")
    fun putMapping(): String{

        return "put-mapping"
    }

    @RequestMapping(method = [RequestMethod.PUT], path = ["/request-mapping"])
    fun requestMapping(): String {

        return "request-mapping -put method"
    }
}

 

 

2. @ResPonseBody 사용.


@PutMapping("/put-mapping/object")
fun putMappingObject(@RequestBody userRequest: UserRequest): UserRequest {
    return userRequest
}

 

 

3. ObjectMapper 예제


 

다음과 같이 응답을 해야한다고 해보자.. camel case, snake case가 섞여있따. ㅋㅋ

{
    "result" : {
     "result_code" : "OK",
    "result_mesage" : "성공"
    },
    "description" : "~~~",
    "user" : [
        {"name" : "aaa", 
        "age": 1,
        "email":"aa",
        "phoneNumber" : "111"
        },
        {"name" : "bbb", 
        "age": 2,
        "email":"bb",
        "phoneNumber" : "222"
        },
        {"name" : "ccc", 
        "age": 3,
        "email":"cc" ,
        "phoneNumber" : "333"
        }
    ]
}

응답으로 내보낼 객체의 구조는 다음과 같다.

data class UserResponse (
    var result: Result? = null,
    var description: String? = null,
    @JsonProperty(value = "user")
    var userRequest: MutableList<UserRequest>? = null

)

@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy::class)
data class Result(
    var resultCode : String? = null,
    var resultMessage : String? = null
)

응답을 camel Case로 주기 위해 기존 @JsonNaming을 삭제.

//@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy::class)
data class UserRequest(
    var name: String? = null,
    var age: Int? = null,
    var email: String? = null,
    var address: String? = null,

    //@JsonProperty("phone_number")
    var phoneNumber: String? = null //phone_number: snake case
)

apply 패턴을 사용하여 다음과 같이 응답을 내려줄 수 있다.

 @PutMapping("/put-mapping/object")
    fun putMappingObject(@RequestBody userRequest: UserRequest): UserResponse {
        // 0. userResponse
       return  UserResponse().apply {
            // 1. result
            this.result =  Result().apply {
                this.resultCode = "OK"
                this.resultMessage = "성공"
            }
        }.apply {
            // 2. description
            this.description = "~~~~~~~"
        }.apply {
            // 3. user mutable list
            val userList = mutableListOf<UserRequest>()

            userList.add(userRequest)

            userList.add(UserRequest().apply {
                this.name = "A"
                this.age = 10
                this.email = "A.com"
                this.address = "a address"
                this.phoneNumber = "01011111"
            })

            userList.add(UserRequest().apply {
                this.name = "B"
                this.age = 20
                this.email = "B.com"
                this.address = "b address"
                this.phoneNumber = "01011111"
            })

           this.userRequest = userList
        }
    }

 

 

4. GitHub


 

GitHub - bsh6463/KotlinSpring: GET

GET. Contribute to bsh6463/KotlinSpring development by creating an account on GitHub.

github.com

 

'인프런 > [인프런] Kotlin으로 개발하는 Spring Boot Web MVC' 카테고리의 다른 글

ResponseEntity, @ResponseBody  (0) 2022.04.24
DELETE  (0) 2022.04.24
POST  (0) 2022.04.24
GET  (0) 2022.04.24
[인프런] Web 개론  (0) 2022.04.24
Comments