Java에서 UserDto를 통해 requestbody를 받아 온다.
@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDto {
private String firstName;
private String address;
private LocalDateTime birthday;
private int age;
}
user객체에 필요한 값만 가지고 와서 modelMapper를 통해 맵핑 해준다.
import org.modelmapper.ModelMapper;
...
@Autowired
ModelMapper modelMapper
@PostMapping
public ResponseEntity createUser(@RequestBody UserDto userDto){
User user = modelMapper.map(userDto, User.class);
User newUser = this.userRepository.save( user);
//create는 uri를 반환해야한다.
URI createdURI = linkTo(
UserController.class) //EventController 클래스에서 메서드를 선언
.slash(newUser.getId())
.toUri();
// event.setId(100);
return ResponseEntity.created(createdURI).body(user);
}
여기서 이번시간에 공부할 내용은 userDto에서 다른 값(id, sex)이 들어온다고 하면 badrequest를 보내고 싶다.
하지만 지금 코드에서는 201로 응답 한다.
해결방법 :
SpringBoot 에서는 UserDto를 requestbody json으로 받으면 Jackson 라이브러리를 통해 알아서 serialization되어 객체로 반환한다.
이럴때 application.properteis 에 설정을 해주면 400 badrequest를 반환한다.
spring.jackson.deserialization.fail-on-unknown-properties=false
Jackson 라이브러리에서의 serialization, desrialization
deserialization : json을 객체로 변환하는 것
serialization : 객체를 json으로 변환하는 것
인프런 강좌 백기선 SpringRestAPI를 보면서 정리한 것입니다.
'BackEnd > SpringBoot' 카테고리의 다른 글
SLF4J: Detected both log4j-over-slf4j.jar AND bound slf4j-log4j12.jar on the class path, preempting StackOverflowError (0) | 2020.04.16 |
---|---|
Spring Boot Logging (1) (0) | 2020.04.16 |
SpringBoot(4) -T-Academy (0) | 2019.05.24 |
SpringBoot(3)-T-Academy (0) | 2019.05.22 |
SpringBoot(2) -T-Academy (0) | 2019.05.21 |