이 프로젝트를 통해 사용자 인증, 데이터 보안, CRUD 기능 구현, 실시간 데이터 처리, 웹 크롤링 등 다양한 기술적 구현을 목표로 삼고 있습니다.
클라이언트는 사용자의 정보인 이메일, 패스워드, 닉네임, 프로필 사진을 입력하여 해당 회원 정보를 서버로 전송하여 데이터베이스에 저장합니다.
email을 파라미터로 서버로 전달하여 서버에서는 저장되어 있는 이메일을 조회하여 해당 이메일이 있다면 notFound 응답코드를 반환하고 그렇지 않다면 ok 응답 코드를 반환합니다.nickName을 파라미터로 서버로 전달하여 서버에서는 저장되어 있는 이메일을 조회하여 해당 이메일이 있다면 notFound 응답코드를 반환하고 그렇지 않다면 ok 응답 코드를 반환합니다.BCryptPasswordEncoder 를 사용하여 클라이언트로부터 받은 패스워드를 서버에서 암호화하여 저장합니다.@RequestParam 으로 MultipartFile 타입으로 전달하며 데이터베이스에 저장합니다.수정 : 클라이언트로부터 회원 정보의 수정 요청을 받아 데이터베이스를 업데이트합니다.
탈퇴 : 클라이언트로부터 해당 정보를 Delete 요청을 받아 데이터베이스에서 삭제합니다.
서버는 클라이언트로부터 요청된 검색 타입, 검색 키워드, 페이징 처리를 기반으로, 회원 목록을 반환합니다. 이 때 사용자 권한이 admin 일 경우에만 목록을 볼 수 있습니다.
type : 전체, 이메일, 닉네임으로 타입을 나누며 해당 타입을 파라미터로 서버로 전달하여 해당하는 회원의 정보를 반환합니다.keyword : type에 해당하는 검색어로 검색하여 파라미터로 전달하여 회원 정보를 반환합니다.page : 페이지 번호를 파라미터로 나타내며, 한 페이지당 10개씩 보여주고 클라이언트는 페이지 번호를 이용하여 다음 페이지, 이전 페이지로 이동할 수 있습니다.클라이언트는 글 제목, 내용, 파일을 서버로 전송하며, 서버는 로그인 여부를 확인한 후 해당 정보를 데이터베이스에 저장합니다. 저장이 성공하면 ok 응답 코드를, 실패하면 badRequest 응답 코드를 반환합니다.
files[i].name)을 보여줍니다. 해당 게시물 번호를 받아와 해당 글의 정보를 조회하고 파일, 좋아요 여부, 댓글의 정보도 같이 반환합니다.
좋아요 : 클라이언트에서는 사용자가 해당 글에 좋아요 여부를 확인합니다. 사용자가 로그인을 하지 않은 경우, 좋아요 여부를 false 로 설정하고 로그인한 경우 좋아요 여부를 조회하여 결과를 반한합니다.
댓글
ok 응답을 반환하고 그렇지 않은 경우 badRequest 응답을 반환합니다.commentId)와 댓글 내용을 서버로 보내서 해당 댓글을 쓴 사용자에 한에서 댓글 정보를 업데이트합니다. 댓글 수정을 성공할 경우 ok 응답을 반환하고 실패한다면 *FORBIDDEN* 응답을 반환합니다.ok 응답을 반환하고 실패한다면 *FORBIDDEN 응답을 반환합니다.*클라이언트는 서버로부터 게시글 아이디를 요청하여 해당 게시글의 정보를 받고 클라이언트로부터 게시글의 수정 요청을 받아 데이터베이스를 업데이트하고 필요한 경우 파일을 삭제하고 새로운 파일을 업로드합니다.
false 로 반환합니다.서버는 클라이언트로부터 요청된 검색 타입, 검색 키워드, 페이징 처리를 기반으로, 게시글 목록을 반환합니다. 이 때 사용자 권한이 admin 일 경우에만 목록을 볼 수 있습니다.
type : 전체, 글(제목+내용), 작성자로 타입이 나누어져 있으며 해당 타입을 파라미터로 서버로 전달하여 해당하는 게시글 정보를 반환합니다.keyword : type에 해당하는 검색어로 검색하여 파라미터로 전달하여 검색어에 해당하는 게시글을 반환합니다.page : 페이지 번호를 파라미터로 나타내며, 한 페이지당 10개씩 보여주고 클라이언트는 페이지 번호를 이용하여 다음 페이지, 이전 페이지로 이동할 수 있습니다.클라이언트에서 크롤링할 목록을 요청하고 서버는 크롤링을 수행하고 크롤링된 데이터를 반환합니다.
Jsoup을 사용하여 해당 URL에서 HTML 문서를 로드하고 이를 Document 객체로 반환하여 HTML 문서에서 필요한 데이터를 포함하는 요소들을 선택합니다. CSS 선택자에 맞는 요소들을 가져옵니다.Product 객체를 생성합니다.위와 같은 기능을 통해 사용자 경험을 향상시키고, 안정적이고 보안이 강화된 웹 서비스를 제공할 수 있었습니다.