Spring REST Docs 를 사용하고자 하는 이유에 대해 말씀드리기에 앞서, 사전에 필요한 지식과 선례를 통한 문제 인식을 살펴봅니다. API 문서화 왜 하는 걸까? 표준화 된 API 명세서를 작성할 경우, Front-End, Back-End 개발자 간의 협업을 촉진하며,외부 개발자가 소프트웨어를 쉽게 이해하고 활용할 수 있게 합니다.더불어 정확하고 최신 업데이트 된 API 문서는 시스템의 에러를 빠르게 찾고 해결하는 데 도움이 됩니다 저희들은 이미 협업을 해본 개발자로서, API문서의 필요성과 사용하는 이유를 이미 숙지하고 있다 생각합니다. 그러나 위 설명에 적힌 API 문서 최신 업데이트는 종종 실수하는 요소입니다. (실제로 현재 리펙토링 하고자 하는 기존의 프로젝트의 API 문서도 최신화 ..
현재 FreindShip은 SptringBoot3.2.1 버전을 갖고 현재 개발을 하고 있습니다.그런데 Controller에서 RequestBody에 들어올 값을 직렬화하여 받을 DTO에 아래와 같은 이유로 올바르지 않는 값을 받고 싶지 않았습니다. 💡 이유BAD GUYS의 특수한 입력값을 통한 해킹 시도개발자가 의도하지 않은 양식의 값을 통한 버그그래서 RequestBody로 직렬화하여 DTO를 생성할 때 값이 의도하지 않은 양식이라면 예외 응답을 보내도록 하며, Client에게 양식에 맞게 보내라 하고 싶었습니다. 그래서 @NotNull 과 같은 에서 제공해주는 애노테이션을 통해 입력 값에 대한 검증을 시도하는데,내가 원하는 의도에 맞게 유효성 검사를 커스텀하고 싶어졌습니다.그래서 DTO내부에 ..
회원제 서비스를 구현하게 될 때 무심코 모든 회원의 정보를 하나의 테이블에 넣는 경우가 있습니다.(물론 취향의 차이로 존중해줄 수 있습니다.ㅎㅎ) 이 상태에서 만약 DB가 해킹된다면?회원 정보를 담은 테이블을 읽으면 김명준의 본명과 주소지를 알아낼 수도 있습니다.이를 예방하기 위해서 DB에 넣을 때 소중한 정보를 암호화하여 넣어줄 수 있습니다.그렇게 암호화된 정보를 DB에 저장할 시 ,DB 를 해킹하더라도 암호키를 알지 못한다면, DB에서는 알 수 없는 값이 보여지기 때문에 개인정보를 알아내기 어렵습니다. 그럼 다시, 회원의 모든 정보를 암호화해서 넣어줘야 할까? 물론 모든 정보에 대해 암호화하여 관리하면 더 안전할 겁니다.그러나 자주 사용되고 중요하지 않은 공개될 수 있는 (공개 게시물 제목, 내..
OverViewFriendship의 채팅 시스템은 웹소켓의 프로토콜의 일종인 STOMP 프로토콜을 사용하여 웹소켓을 통해 실시간으로 메시지를 교환합니다. Pub/Sub (Publish-Subscribe) 모델을 따르며, 이를 통해 사용자는 채팅방(chatRoom)에 메시지를 게시하고, 해당 채팅방의 메시지를 구독하는 형태를 따릅니다! 🍊 Pub/Sub 구조란?채팅 구조를 보여드리기 전에, 앞으로 언급될 Pub/Sub 구조에 대한 이해가 필요한데요. 혹시 제 설명이 부족하다면 질문해주시면 답변 드릴 수 있도록 하겠습니다! 먼저 Pub/Sub이란 'Publisher-Subscriber', 즉 '발행자와 구독자'의 약자입니다. 이름에서 알 수 있듯이 한쪽에서 메시지를 전달하는 발행자와, 그 메시지를 받는..