초보 백엔드 개발자의 고찰이니 귀엽게 봐주세요 :)
최근 SpringBoot 프레임워크를 통해 REST API 서버를 개발하며 이러한 고민이 있었다.
REST API를 설계할 때, /all, /{id}가 아닌 /만 마지막 문자로 올때는 어떻게 처리할까?
이 부분에 대해 개발 동아리 팀원과 상의해봤을 때, 갑론을박(까지는 아니지만 꽤 많은 대화)이 오갔다.
Controller에 @GetMapping("/")으로 어노테이션을 넣게 되었을 때 실제 요청 주소에 /를 안넣으면 404 오류가 나고,
@GetMapping("")으로 어노테이션을 넣었을 때는 요청 주소에 /를 넣으면 404 오류가 났다.
이것때문에 아예 Mapping 어노테이션에 value값 자체를 주지 말까도 생각해보고, @GetMapping(value={"/", ""}) 이렇게 두가지 값을 넣을까도 생각했다.
하지만 이는 생각보다 간단한 문제였다. 대회 멘토님께 코드리뷰를 받고 바로 이거구나, 하고 깨달았다.
"REST API에서 /는 계층을 뜻하기 때문에 RESTful하게 작성하려면 끝에 /를 붙이지 않는 것이 더 적절해보여요"
그렇다, 본질인 RESTful에는 집중을 안하고, 작동하는가에 대해서만 생각했었다.
이를 계기로, /(slash)는 REST API에서 단순 연결이 아니라 "계층"을 뜻한다는 걸 알게 되었고,
좀 더 본질적으로 생각하는 근육을 키워야겠다고도 성찰했다.
반응형