7. 주문

khs·2022년 8월 7일
0

ResponseEntity

  • Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 HTTP 요청(Request) 또는 응답(Response)에 해당하는 HttpHeader와 HttpBody를 포함하는 클래스이다.
  • HttpEntity 클래스를 상속받아 구현한 클래스가 RequestEntity, ResponseEntity 클래스이다. ResponseEntity는 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다.

Principal

  • 컨트롤러의 처리기 메소드에서 자동 파라미터로 주입받을 수 있는 타입 중 하나로 가장 구현체의 최상위 인터페이스이기 때문에 이 타입으로 받으면 사용할만한 메소드가 getName() 정도밖에 없다. 쉽게 말해 ID 정보만 가져다 사용할 수 있다고 보면 된다.

  • 현재 로그인 유저의 정보를 얻기 위해서 @Controller 어노테이션이 선언된 클래스에서 메소드 인자로 principal 객체를 넘겨 줄 경우 해당 객체에 직접 접근할 수 있다. principal 객체에서 현재 로그인한 회원의 이메일 정보를 조회한다.

BindingResult

  • BindingResult의 경우 ModelAttribute를 이용해 매개변수를 Bean 에 binding 할 때 발생한 오류 정보를 받기 위해 선언해야 하는 어노테이션이다. RequestParam도 그렇지만, 매개변수 binding 이 실패하면 400 오류가 발생된다. 이게 500.1 같은 오류가 발생해야 맞을 것 같지만, Spring 입장에선 요청 자체가 잘못된 것이 뭔가 설계가 잘못 되어서 혹은 잘못된 경로를 호출해서 발생한 걸로 판단하기 때문에 400 으로 오류를 발생시키는 것이다. BindingResult를 통해 값을 전달받아 이후 처리를 할 수 있도록, 즉 흐름을 진행할 수 있도록 설계된 것이다.
  • 잘 이해가 안된다...
profile
권혁상입니다. 행복코딩^_^

0개의 댓글