Skip to content

요청,응답 날짜형식 지정

kimhanui edited this page Nov 17, 2020 · 1 revision

참고 : https://jojoldu.tistory.com/361

핵심

  • Get요청시에는 @DateTimeFormat
  • Post 요청, ResponseBody에서는 @JsonFormat
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm", timezone = "Asiz/Seoul")
    private LocalDateTime modifiedDate;
  • Post 요청시에도 @DateTimeFormat이 적용될 수 있으나, @JsonFormat이 지정되어 있지 않을때만 가능하다.
  • Spring Boot 2.0에서는 JSR 310이 기본 의존성에 포함되어있다.

정리

spring에서 날짜,시간 형식(Local, LocalDateTime)을 지정하는 어노테이션은 두가지가 있음.
@JsonFormat, @DateTimeFormat 각각이 어떤 상황에 적용되는지 + 우선순위 테스트 해보신 것.

  • spring boot 2.0부터는기본 의존성이 되었다고 함(jsr310)

요약

  1. GET으로 받기 1-1. ModelAttribute로 DTO 객체 받기
  • @DateTimeFormat 통과 1-2. RequestParam로 필드별로 받기
  • @DateTimeFormat 통과
  1. POST로 받기(RequestBody)
@PostMapping("/post")
    public String post(@RequestBody JsonModel jsonModel) {
        log.info("get 요청 데이터 = {}", jsonModel);

        return "post 성공";
    }
  • @DateTimeFormat, @JsonFormat통과
  • 우선순위
    • 두 어노테이션 모두가 있으면 @JsonFormat이 진행된다
    • @JsonFormat이 틀리면 @DateTimeFormat이 맞더라도 직렬화는 실패한다
    • 단, @DateTimeFormat이 있다면 @DateTimeFormat의 포맷으로 직렬화가 진행된다.
  1. ResponseBody로 JSON값 리턴하기
@GetMapping("/response")
    public ResponseModel responseModel() {
        return new ResponseModel("gumago", LocalDateTime.of(2018,12,15,10,0,0));
    }
  • @JsonFormat 통과

Clone this wiki locally