프로젝트/Recipository

[Dev] 22.12.29. 현재까지의 요청 URL 수정

규글 2022. 12. 29. 18:35

 이전에 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/delete/{commentId}

/user/write			->	/user/contents/write

 이어서 add, delete, write 의 CRUD를 나타내는 표현을 지워줄 것이다.

 

/user/comments/add			->	/user/comments

/user/comments/delete/{commentId}	->	/user/comments/{commentId}

/user/contents/write			->	/user/contents

/user/contents/update/{contentId}	->	/user/contents/{contentId}

/user/contents/delete/{contentId}	->	/user/contents/{contentId}

 위와 같이 정해진 방식으로 모든 html의 href와 action, controller의 mapping에서 url pattern을 변경해주었다.

 

 그런데 조금 의아할 수도 있겠다.(필자는 의아했다.) 당장 보이는 게시글을 수정하고 삭제하는 기존의 url pattern에서 변경된 것이 일치한다. 이는 문제가 없을까? 그렇다. 문제가 없다.

 

HTTP POST http://localhost:8080/user/content/{contentId}

HTTP PUT http://localhost:8080/user/content/{contentId}

 이유는 간단하다. 두 요청 url의 method가 서로 다르기 때문이다. Controller에서도 이들을 각각 PostMapping과 PutMapping으로 구분하고 있으며, 따라서 두 요청 url의 보이는 형태는 같지만 method가 다르기 때문에 서로 다른 요청이라고 할 수 있겠다.

 

 마지막으로 작업을 마치고서 발생한 문제 중에서 조회수가 반복적으로 올라가는 현상이 다시 나타났는데, 이는 Cookie의 path 정보에 표기된 /content를 /contents로 수정해주는 것으로 해결했다. 지금 현재 게시글에는 작성하지 않았으나, url pattern에서 명사에 단수형보다는 복수형을 권장한다고 하여 게시글은 content를 contents로, 댓글인 comment를 comments로 변경하면서 발생한 문제였다.

 

 

 이제 남은 작업은 DB에 저장하고 client에 출력할 게시글과 댓글의 작성자를 로그인 email에서 nick name으로 변경하는 것이다. 빠르게 작업한 뒤, 사용자의 정보와 관련된 기능을 작업하도록 하겠다.