본문 바로가기

분류 전체보기190

[Dev] 22.12.29. DB에 저장하고 Client에 출력할 작성자 정보 수정하기 말은 저렇게 되어있지만, 근본적인 문제는 DB에 저장할 작성자의 정보만을 올바르게 setting 해주면 되는 부분이다. 바로 작업으로 들어가자. 작업 현재 client에서 게시글을 작성하고 댓글을 작성하는 요청에 대한 처리를 하는 controller의 method 모습이다. 내용은 좀 다르지만 공통적으로 Authentication Principal 객체의 username 항목을 작성자의 정보로 넣어주고 있다. 이때의 username은 로그인 과정에서 작성했던 로그인 아이디의 정보이다. 하지만 원래의 목적은 아이디가 아닌 닉네임이 노출되도록 하고 싶었으므로, 더 작업하기 전에 현재의 작업을 약간 수정할 필요를 느꼈다. Authentication Principal에 해당하는 UserDetails를 imple.. 2022. 12. 29.
[Dev] 22.12.29. 현재까지의 요청 URL 수정 이전에 Spring Boot 강의 내용 중에 URI 설계 패턴에 대한 내용이 있었다. 그 중에 계층을 보다 확실히 나타내고, CRUD를 나타내지 않도록 하기 위해서 현 시점에서 이에 대해 수정한 뒤 넘어가고 싶다. 위 네 이미지에서 볼 수 있는 것처럼 delete, update 등의 CRUD를 나타내는 항목과, del-comment, write 등의 계층화가 덜 된 항목에 대한 수정을 할 것이다. 작업 우선 댓글의 경우 작성하는 url이 add-comment, 삭제하는 url이 del-comment로 되어 있는데 이들을 1차적으로 계층을 구분해줄 것이다. /user/add-comment->/user/comments/add /user/del-comment/{commentId}->/user/comments/.. 2022. 12. 29.
[Dev] 22.12.29. 작성자와 다른 사용자의 수정, 삭제 요청 방어(feat. Interceptor) 고민 사용자의 정보를 확인하고 수정하는 등의 기능을 작업하기에 앞서 고민이 생겼다. 게시글 작성자가 아닌 경우에 게시글을 수정, 삭제를 시도하는 경우가 생기는 경우를 어떻게 막아야 할까? 우선 지난 국비 과정에서의 경우는 게시글을 삭제하는 경우에도 GET 방식 request를 통해 동작하도록 했다. 당시에는 request 방식이 GET과 POST 만 존재하는 줄 알고 그랬으나, Spring Boot 강의를 수강하면서 PUT과 DELETE 방식이 있다는 것을 알게 되어서 이번에 그것을 적용해보았다. 기본적으로 인터넷 주소창을 통해 요청하는 것은 GET 방식인데, 때문에 DELETE 방식 요청의 url을 동일하게 작성하더라도 원하는 동작을 하도록 할 수 없다. 하지만 게시글 수정하는 page로의 요청은 GE.. 2022. 12. 29.
[Dev] 22.12.23. 게시글 삭제 작업 content.html / content.js 삭제 (content.html) -------------------------------------------------------------------------------------- (content.js) // 게시글 삭제 클릭 시 동작 document.querySelector("#contentDeleteBtn").addEventListener("click", function(e){ e.preventDefault(); var wantToDelete = confirm("게시글을 삭제하겠습니까?"); if(wantToDelete){ var url = this.getAttribute("href"); var token = document.querySele.. 2022. 12. 23.
[Dev] 22.12.22. 게시글 수정 2 (feat. Entity field update method) Entity는 DB와의 data를 교환하고, DB의 data를 변경할 수 있기 때문에 setter method의 사용이 지양된다고 한다. 이와 같은 내용이 언급된 블로그들을 다른 정보를 찾기 위해서 웹을 돌아다니다가 발견했고, 이에 대해 극단적인 필자는 이를 최대한 피하고자 노력했다. 하지만 필자는 어쩌면 괜한 고집으로 일을 어렵게 만들고 있었는지도 모른다. '지양' 이라는 단어는 어떠한 것을 하지 않는다는 의미이긴 하지만, 이것이 절대적으로 하면 안된다는 의미로 사용되지는 않는다. 필자가 듣는 강의는 아니지만, 온라인 강의 컨텐츠를 만든 한 강사는 너무 강박을 가질 필요는 없다고 말하면서 method의 이름도 의미있게 만들 것을 제안한다. 필자는 이미 이전 과정에서 Recipe Dto로부터 Recipe.. 2022. 12. 22.
[Dev] 22.12.21. 게시글 수정 1 (feat. 게시글 작성 cascade) 게시글 수정 국비 과정에서의 프로젝트에서 무언가를 수정할 때는 logic이 간단했다. 단순히 client의 update form에 data를 setting 하도록 뿌리고 그 form의 내용을 수정한 후 submit 하면, controller에서 Dto로 data를 받아서 update query에 각 data를 setting 해주는 방식이었다. 게다가 게시글이 가질 수 있는 카테고리와 같은 항목은 여러 개를 가질 수 있도록 했었지만, 그 저장 방식을 쉼표로 연결된 String 을 저장하는 것이기도 해서 그리 복잡한 구현이라고 생각하지 않았다. 이번에는 조금 다르게 Spring JPA 를 활용하고 있어서 따로 query문을 작성하고 있지 않고, data를 다루기 위한 Entity 객체 중에 게시글은 Reci.. 2022. 12. 21.