Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- JPQL
- JDBC
- jpa
- springdatajpa
- Android
- Exception
- 김영한
- kotlin
- 스프링
- 인프런
- QueryDSL
- java
- 백준
- http
- Servlet
- Thymeleaf
- spring
- SpringBoot
- Proxy
- Greedy
- 그리디
- 스프링 핵심 기능
- AOP
- 자바
- 알고리즘
- 스프링 핵심 원리
- Spring Boot
- db
- transaction
- pointcut
Archives
- Today
- Total
개발자되기 프로젝트
PUT, Request Body, ResponseBody 본문
인프런/[인프런] Kotlin으로 개발하는 Spring Boot Web MVC
PUT, Request Body, ResponseBody
Seung__ 2022. 4. 24. 15:031. @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
'인프런 > [인프런] 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