전체 글106 [TIL]20230714 - CI/CD 지금까지 개발한 스프링부트 프로젝트를 배포할때는 아래와 같은 과정을 거쳐 배포하였다. 로컬에서 개발 완료 후 빌드하여 jar파일 생성 생성된 jar파일을 ec2로 복사하여 업로드 ec2로 이동하여 java -jar를 통해 실행시키기 하지만 위의 경우 코드의 수정이 있을 때 마다 위와 같은 과정을 반복해야한다. 이는 개발과정에서 매우 번거로운 일이다. 그리고 앞으로는 협업하는 과정이 주를 이루기 때문에 혹시라도 배포한 코드에 버그등 오류가 없어야 한다. CI/CD 자동화를 통해 코드가 수정될때마다 매번 빌드 - 배포할 필요 없이 자동적으로 테스트를 통해 버그를 찾고 검증된 코드를 현재 실행중인 jar파일의 중단 없이 배포할 수 있다. CI CI는 Continous intergration 즉, 지속적인 통합.. 2023. 7. 15. [TIL]20230713 - RefreshToken 오늘은 기존 진행하던 프로젝트에 리프레쉬 토큰을 적용해보았다. JWT는 Stateless한 방식이기 때문에 클라이언트의 토큰이 탈취당하면 서버에서는 알 방법이 없어 공격자가 탈취한 토큰을 가지고 접근할 수 있다는 단점이 있었다. 이 단점을 보안하기 위한 방법으로는 토큰의 만료시간을 적게 주는 방법이 있다. 하지만 만료시간이 적으면 그만큼 자주 토큰을 발급 받아야하기 때문에 사용자의 불편함을 초래할 수 있다. 이에 제안된것이 리프레쉬 토큰이다. 사용자가 로그인 성공시 Access 토큰과 Refresh토큰을 발급해주고 사용자는 인가가 필요한 요청시 Access토큰과 Refresh토큰을 Header에 담아 요청한다. 우선 Access토큰을 검사하여 검증이 된다면 그대로 인가를 받고 만약 Access토큰이 만료.. 2023. 7. 14. [TIL]20230712 - 페이징 처리 게시글등을 조회하는 API 에서 응답하는 데이터의 갯수가 많아지면 클라이언트에서 볼때 아래로 쭉 늘어지게 되므로 페이지 처리를 통해 가독성 좋게 표현해야한다. 물론 서버는 그대로 한개의 리스트 형태로 데이터를 보내주고 프론트엔드에서 처리를 통하여 클라이언트에게 보여줄 수 있지만 Spring Data에서 페이징 및 정렬 기능을 제공하기 때문에 손쉽게 페이징, 정렬을 구현하여 프론트에게 보내줄 수 있다. 클라이언트에서 서버에게 조회 api 요청 시 페이징 처리에 필요한 몇가지 옵션과 함께 요청하면 서버측에서 페이징 처리를 통해 그에 맞춰 가공하여 보내줄 수 있다. page : 조회할 페이지 번호 size : 한 페이지에 보여줄 상품 개수 sortBy : 정렬 항목 isAsc : 오름차순 @GetMapping.. 2023. 7. 12. [TIL]20230711 - 회원탈퇴 기능 구현 어제 주특기 주차 과제 5레벨을 완료하였는데 아직 다음 주차까지 3일 가량 시간이 남아서 진행한 과제에서 추가로 구현해볼만한 것들을 구현해보았다. 우선 회원탈퇴기능을 구현해보기로 하였다. 회원을 탈퇴하게 되면 회원이 작성한 게시글과 댓글이 삭제되고 관련된 댓글이 삭제 되도록 하였다. 컨트롤러 @DeleteMapping("/user/withdrawal") public JsonResponse withdrawal(@RequestParam Long id, @AuthenticationPrincipal UserDetailsImpl userDetails){ User user = userDetails.getUser(); userService.withdrawal(id, user); Result result = new R.. 2023. 7. 11. [Spring]@ControllerAdvice를 이용한 전역 예외 처리 게시판 프로젝트를 진행하면서 게시글을 조회하거나 수정하는 경우 PostResponseDto로 엔티티를 변환하여 클라이언트에게 반환하였다. 하지만 조회나 수정 과정에서 요청받은id에 해당하는 게시글이 없거나 수정하하려는 유저와 게시글의 작성자가 다를때는 예외를 발생시켜 중단하도록 로직을 구성하였다. 이때 예외가 발생하면 서버에서는 콘솔창에 예외메시지와 함께 알아볼 수 있지만 클라이언트에게는 아무것도 반환되지 않으므로 어떤 이유로 반환값이 없는지 알 방법이 없다. 그러므로 예외처리를 통해 클라이언트에게 예외가 발생한 이유를 알려주어야한다. 하지만 예외처리를 해당 컨트롤러의 메소드에서 try - catch로 처리하게 되면 성공시에는 ResponseDto로 반환하지만 예외가 터졌을 시에는 반환 타입이 달라져야하.. 2023. 7. 10. [TIL]20230710 - 게시글 및 댓글에 좋아요 기능 구현 오늘 진행한 과제 Lv5의 요구조건으로는 기존의 진행했던 게시판 프로젝트에서 댓글과 게시글에 좋아요 기능을 구현하는 것이었다. 그래서 좋아요와 회원, 게시글, 댓글간 연관관계에 대해 생각해보았다. 우선 게시글의 좋아요에 대해서만 생각해보면 회원은 게시글에 좋아요를 누를 수 있다. 여러 회원이 여러 게시글에 좋아요를 누를 수 있다. 이는 M:N관계이므로 이를 풀어서 새로운 Like엔티티를 만들어 회원엔티티, 게시글엔티티와 각각 N:1관계를 맺어주었다. 그 후 컨트롤러, 서비스, 리포지토리 클래스를 각각 만들어주었다. LikeService클래스에서는 각각 좋아요 저장, 삭제에 해당하는 로직이 담긴 메소드를 작성하였다. 좋아요를 저장하는 메소드에서는 좋아요를 누를 postId와 JWT인증을 통해 유저 객체를 .. 2023. 7. 10. 이전 1 ··· 6 7 8 9 10 11 12 ··· 18 다음