2023.07.05.수.TIL

heeh·2023년 7월 6일

TIL

목록 보기
36/82
post-thumbnail

Spring 숙련

팀프로젝트

  • @JsonIgnore는 주로 데이터 직렬화/역직렬화 시 특정 필드를 무시하기 위해 사용되는 애너테이션
  • @AuthenticationPrincipal은 현재 인증된 사용자의 정보를 편리하게 추출하기 위해 사용
    → 요청하면 필터를 타고 리퀘스트의 헤더에서 JWT 토큰 값을 가져오고 토큰을 검증하고 검증 완료되면 토큰 값에 해당하는 유저의 정보를 가져와서 시큐리티컨텍스트홀더에 권한 정보를 넣어준다 그 순간부터! 컨트롤러에서 @AuthenticationPrincipal를 이용하여 정보를 가져올 수 있다, 인증되지 않은 값은 null
    - 토큰 검증이 완료된 유저 정보가 시큐리티컨텍스트홀더로 들어가고 @AuthenticationPrincipal을 사용하여 정보를 가져올 수 있다~
  • public ResponseEntity
    • ResponseEntity : Spring에 있는 Class 객체
    • <>
      • Java의 제네릭 문법
      • <> 안에 무엇이든지 들어갈 수 있다
      • ? : 무엇이 들어갈지 정할 수 없다 = 무엇이든지 들어간다!
      • <> 안에 들어 가는 것은 타입이고 그 타입으로 반환(return)해줘야 한다
    • 반환 예제
      return ResponseEntity.status(201).body(result);
      • ResponseEntity을 반환해주고 status(201), body(result)를 보여주겠다
    • .status(201).body(result); → 화면(개발자 모드)에 표시해주는? 이렇게 표현하는게 낯설다…
  • 왜 result인가?
    CommentResponseDto result = commentService.createComment(requestDto, userDetails.getUser());
    • 코드를 읽기 쉽게 만들기 위해 일반적으로 사용되는 이름 중 하나
    • 가독성: result는 메서드의 반환값을 나타내는 의미적으로 간결하고 명확한 이름
    • 일관성: result라는 변수명은 많은 개발자들이 익숙한 관례적인 이름
    • 유연성: result라는 변수명은 반환값의 타입에 상관없이 사용 가능
  • 댓글 수정
    comment.setComment(requestDto.getComment());
    • setContent() 메서드는 댓글 객체의 내용을 수정하기 위해 사용되는 메서드로서, 해당 코드를 통해 사용자가 전달한 수정된 댓글의 내용을 댓글 객체에 설정하여 업데이트 작업에 활용
  • NotFoundException
    • 데이터베이스에서 특정 ID로 항목을 조회하려고 할 때 해당 ID에 해당하는 데이터가 없는 경우 NotFoundException이 발생
    • 클라이언트에게 요청한 리소스가 존재하지 않음을 알리는 용도로 활용
    • 예외를 적절하게 처리하여 클라이언트에게 적절한 오류 응답을 제공하거나 예외 상황을 처리하는 로직을 수행
  • AccessDeniedException
    • 사용자가 특정 페이지에 접근하려고 시도했지만 해당 사용자의 권한이 부족하여 접근이 거부된 경우 AccessDeniedException이 발생
    • 일반적으로 이 예외를 적절하게 처리하여 사용자에게 적절한 오류 메시지를 표시하거나 접근 거부 상황을 처리하는 로직을 수행
  • throw new
    • 예외를 발생시키는 것
    • 예외가 발생하면 프로그램의 실행이 중단되고, 예외를 처리하는 부분으로 제어가 이동
  • return ResponseEntity.ok(responseDto);는 수정된 댓글 정보를 성공적인 응답으로 클라이언트에게 전달하는 코드
    • ok()ResponseEntity 클래스의 정적 메서드로서, 성공적인 요청에 대한 응답을 생성하는 데 사용
  • UnauthorizedException
    • 인증되지 않은 사용자가 허용되지 않은 작업을 수행하려고 할 때 발생하는 예외
    • 인증된 사용자만이 댓글을 수정할 수 있는 기능이 있다면, 로그인하지 않은 사용자가 댓글 수정을 시도하면 UnauthorizedException을 발생시켜 해당 요청을 거부
  • ResponseEntity.noContent().build()
    • deleteComment 메소드에서 삭제된 후에 사용자에게 반환할 내용 없음
    • ResponseEntity.noContent().build()를 사용하여 "204 No Content" 상태 코드를 반환
    • 요청이 성공적으로 처리되었지만 응답 본문에 내용이 없음을 나타냄
    • 해석
      • ResponseEntity.noContent(): "204 No Content" 상태 코드를 가진 빈 응답을 생성
      • .build(): 생성된 응답을 빌드하여 완전한 ResponseEntity 객체를 생성
profile
공부하자개발하자으쌰으쌰

0개의 댓글