프로젝트/커뮤니티

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #10 도메인 테스트 작성

이번에는 도메인 테스트를 추가하였다. 원래 컨트롤러와 서비스단위에서만 테스트코드를 작성하였는데, 도메인도 추가하였다. 도메인 내에 있는 메서드를 테스트하였다. 코드가 너무 많기 때문에 가장 코드가 길고, 복잡한 Board를 주로 설명하겠다. 기존의 Board이다. Board @Entity @Getter @Builder @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor public class Board extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "board_id") private Long id; @Column(..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #9 카테고리 API 만들기

이번에는 계층형 카테고리를 추가하였다. 예를 들어 현재 내 티스토리 블로그와 같은 모양을 생각하고 만들었다. 고민한 점은 모든 게시글이 카테고리를 가지고 있는 것이 맞을까 라는 생각이었다. 따라서 굳이 카테고리에 넣지 않아도 되도록 만들었다. 중요한 부분위주로 설명하겠다. Category @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class Category { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "category_id") private Long id; @Column(nullable = false) private String n..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #8 어드민 페이지 만들기

이번에는 어드민 페이지를 추가하였다. 우선 정지에 관련해서 처리할 수 있는 기능을 추가하였는데, 더 세부적인 기능은 추후 추가할 예정이다. 오늘은 유저, 게시판, 댓글에 대해 정지목록을 조회할 수 있고, 정지를 풀어주거나, 삭제할 수 있다. 각각 정지가 당하면, 유저는 권한이 바뀌어서 다른 곳에 접속을 못하게 되고, 게시판이나 댓글의 경우 조회가 안되도록 설정하였다. 그 외에는 3개다 비슷한 로직이기 때문에, 유저에 관해 설명하겠다. Member @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Member extends BaseEntity { @Id @GeneratedValue(strategy = Generat..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #7 Report API 만들기

이번에는 신고기능을 추가하였다. 유저 신고, 게시판 신고, 댓글 신고 총 3가지를 추가하였고, 누적신고가 일정수치를 넘을 시 해당 엔티티에 신고상태를 활성화시켜 주었다. 자세한 건 아래 코드를 보며 자세히 알아보자. 유저신고, 게시판 신고, 댓글 신고 모두 매우 유사한 형태이므로, 유저 신고를 중점으로 설명하겠다. 자세한 건 맨 아래 깃허브를 통해 코드를 확인할 수 있다. MemberReport @AllArgsConstructor @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter @Entity public class MemberReport extends BaseEntity { @Id @GeneratedValue(strategy = Generation..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #6 Comment API만들기

이번에는 댓글기능을 추가하였다. 단순하게 CRUD 기능을 추가하였기에 크게 어렵지 않은 내용이다. 우선 시큐리티 접근 권한 설정을 추가하였다. SecurityConfig .antMatchers(HttpMethod.GET, "/api/comments").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.POST, "/api/comments").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.DELETE, "/api/comments/{id}").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") .antMatchers(HttpMethod.PUT..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #5 게시판 부가기능 추가

오늘은 게시판에 추가적인 작업을 할 것이다. 좋아요, 즐겨찾기, 조회수 기능을 추가하였다. 바뀐 코드와 중요한 부분을 위주로 자세히 알아보자. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandler; @B..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #4 Board API만들기

이번에는 Board 게시판을 추가하였다. 뿐만 아니라 이미지 업로드 기능도 추가하였다. 이후 성능최적화를 위하여 N+1문 제도 해결하였는데, 아래에 자세한 설명이 있다. 이번에 포스팅은 중요한 것 위주로 설명되어 있다. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAcc..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버만들기 #3 - Message API 만들기

이번에는 Message API를 추가하였다. 쪽지기능은 회원과 회원 사이에 주고받는 쪽지를 의미한다. 우선 달라진 코드와 중요한 포인트에 대해 알아보자. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAccessDeniedHandl..

프로젝트/커뮤니티

[프로젝트]커뮤니티 REST API 서버만들기 #2 - Member API 만들기

이번에는 Member API가 추가되었다. 회원 전체조회, 회원단건조회, 회원 정보 수정, 회원탈퇴 기능이 추가되었다. 저번 포스팅에서 바뀐 점과 중요한 점 위주로 설명할 것이다. SecurityConfig @EnableWebSecurity @Configuration @RequiredArgsConstructor public class SecurityConfig { private final TokenProvider tokenProvider; private final CorsFilter corsFilter; private final JwtAuthenticationEntryPoint jwtAuthenticationEntryPoint; private final JwtAccessDeniedHandler jwtAc..

프로젝트/커뮤니티

[프로젝트] 커뮤니티 REST API 서버 만들기 #1 로그인기능 구현 + Swagger

프로젝트 소개 여태까지 여러 프로젝트를 진행했었는데, 그때마다 블로깅을 안했던 것 같다. 이유는 내가 아직 부족한 점이 많아서 좀 더 성장하고 난 이후에 블로깅을 하고 싶었다. 이번 프로젝트는 커뮤니티를 만드는 것인데, 여러가지 기능을 넣어보고 성능 최적화도 진행할 생각이다. 단순 API 개발이지만, 타 개발자와 협업한다는 생각으로 진행할 것이다. 프로젝트 설정 (java 11, Spring-Boot) Dependency 이후 추가로 JWT와 Swagger를 추가해야한다. 이번에 진행할 내용은 다음과 같다. Spring Security + JWT를 이용한 로그인 구현 response를 커스텀하여 응답을 보기 좋게 수정 Swagger 적용 예외처리 security+jwt를 활용한 로그인 구현의 경우 대부분..

javajoha
'프로젝트/커뮤니티' 카테고리의 글 목록