PostMapping과 @JsonProperty
@JsonProperty
DTO
에서 카멜케이스로 작성을 했지만 보내는쪽(클라이언트)에서 스네이크 케이스로 보냈을시 어떻게 되는지 살펴보자.
PostApiController.java
package com.example.post.controller;
import com.example.post.dto.PostRequestDto;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequestMapping("/api")
public class PostApiController {
@PostMapping("/post")
public void post(@RequestBody PostRequestDto requestData) {
System.out.println(requestData);
}
}
PostRequestDto.java
package com.example.post.dto;
public class PostRequestDto {
private String account;
private String email;
private String address;
private String password;
private String phoneNumber;
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "PostRequestDto{" +
"account='" + account + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
", password='" + password + '\'' +
", phoneNumber='" + phoneNumber + '\'' +
'}';
}
}
- java code 에서는 휴대폰번호를 카멜케이스로
phoneNumber
라고 하였고 API TEST Tool에서는 스네이크케이스로phone_number
라고 보내보았다.
PostRequestDto{account='user', email='aaa@gmail.com', address='서울', password='121212', phoneNumber='null'}
PostRequestDto{account='user', email='aaa@gmail.com', address='서울', password='121212', phoneNumber='null'}
당연히 null
이 뜬다. Dto에 @JsonProperty
를 달아줘보자.
PostRequestDto.java
package com.example.post.dto;
import com.fasterxml.jackson.annotation.JsonProperty;
public class PostRequestDto {
private String account;
private String email;
private String address;
private String password;
@JsonProperty("phone_number")
private String phoneNumber;
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "PostRequestDto{" +
"account='" + account + '\'' +
", email='" + email + '\'' +
", address='" + address + '\'' +
", password='" + password + '\'' +
", phoneNumber='" + phoneNumber + '\'' +
'}';
}
}
똑같이 스네이크케이스로 보내면
PostRequestDto{account='user', email='aaa@gmail.com', address='서울', password='121212', phoneNumber='010-1212-1212'}
Leave a comment