본문 바로가기
혼자 공부하는 것들/Spring

[Spring] @RequestBody는 객체로 받자!

by applepick 2022. 5. 30.
반응형

PUT으로 해당 JSON 객체 요청이 들어온다고 가정해봅시다.

PUT {URL/~}
content-type: application/json
{
    "phoneNumber": "010-0000-0000",
    "name": "김아무개",
    "age": 28
}

Body에 핸드폰 번호, 이름, 나이의 정보를 받습니다. 이때! Map을 사용하지 말고 객체를 생성해서 만들어줍시다. 

/**
 * 사용자 승인
 * @param req
 * @return 
 */
@PutMapping("/~")
public Object approvalFrom(@RequestBody Map<String,String> req){
	...
}

 이런 식으로 하면 문제점이 무엇일까요? 

Map으로 리퀘스트를 처리할 경우 어떤 값이 넘어오는지 알 수 없고, 관리하기가 다소 어렵습니다. 정확한 모델을 만들어서 Request를 받는 것이 좋습니다. 

import lombok.Getter;

@Getter
public class UserInfoRequestDto {
    private String phoneNumber;
    private String name;
    private int age;
}

핸드폰 번호, 이름, 나이를 받을 수 있는 객체를 하나 생성해서 사용한다면, 재사용성과 정확한 값을 받아올 수 있는 장점이 있습니다. 또한 객체지향적인 관점에서 장점을 가질 수 있습니다.

/**
* 사용자 승인
* @param req
* @return
*/
@PutMapping("/~")
public Object approvalFrom(@RequestBody UserInfoRequestDto req){
	...
}

위와 같이 사용하면 됩니다. @RequestBody를 Map으로 받는 것을 지양해야 합니다.

반응형

댓글