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를 보면서 정리한 것입니다.

+ Recent posts