개인 프로젝트가 아닌 팀에서 주도하는 협업 프로젝트에서 각자의 개성에 맞게 코드를 작성하면 가독성이 떨어지고 내 코드는 내가 알아보고 남의 코드느 남만 알아보는 사태가 발생할 수 있다.
코드자체의 부분이 나의 담당이 아니더라도 한 팀에서 제작한 프로젝트는 일관성을 가지는게 좋으며 모두가 읽기 쉽고 이해할 수 있도록 작성하게 좋다.
따라서 팀을 이루어서 프로젝트를 진행하게 된다면, 그 팀의 규칙(ground rule)을 정하고 API작성 code 또한 규칙에 맞게 작성하는게 옳은 판단이다.
한 팀이 작성한 코드가 한 사람이 작성한 것 처럼 보일 수 있도록 규칙에 맞게 작성해 주는게 좋다면, 그에 따른 대중적으로 사용하는 컨벤션이 존재할 것이다. 일반적으로 URI네이밍에 있어서 사용하게 되는 컨벤션의 규칙에 대해 알아보자
보통 API의 CRUD를 작성하는데 있어서 URI에 동사나 형용사 보단 명사를 사용한다.
동사를 사용하게 된다면, 같은 테이블 및 데이터에 대한 동작도 난잡하고 일관성이 없어진다.
router.get(/getUsers)
router.post(/createUsers)
router.update(/updateUsers)
위와 같이 동사를 사용하였을 때 Users라는 테이블에서 회원정보들에 대한 CRUD를 작성하게 되지만, 일일히 동사를 사용하게 되어 같은 리소스에 대한 정보인데도 URI의 네이밍이 달라진다. 명사를 사용하게 되면 아래와 같이 깔끔하고 일관성있게 표현된다
router.get(/users)
router.post(/users)
router.update(/users)
일반적으로 URI경로를 네이밍 지을 때 소문자를 우선적으로 사용한다. 사실 대문자와 소문자 중 어느 것을 사용하여도 상관없으나, 하나로 통일할 필요성은 존재한다. 윈도우 운영체제라면 디렉토리나 파일이름에서 대소문자를 구분짓지 않으나, 리눅스 및 유닉스 계열의 서버는 대소문자를 구분지어 판단한다.
따라서 한 가지의 종류로 통일하게 되는데 매번 URI의 작성때는 대문자만 쓰다가 코드를 작성할 때 소문자로 넘오는 개발자의 개발 코스트의 소모가 발생할 수 있어, 소문자로 통일하는게 더 올바를 것이라 판단된다.
이 또한 위의 대소문자와 같이 어느 것을 사용하든 문제는 따로 없지만 하나의 통일은 중요하다. 다만 우리가 데이터베이스에서 데이터를 요청하는 CRUD의 작업을 하게 된다면 데이터베이스에 존재하는 데이터덩어리 즉 데이터조각들에서 일부 데이터를 가져오거나 전부를 가져오는 작업을 취하게 된다.
따라서 조각들을 처음에 요청하는 작업에서 시작이기 때문에 복수명사를 사용하게 되는 것이 아닐까 추측한다.
URI의 네이밍에 단수, 복수 중 어느 것을 사용해도 무방하나, 하나로 통일성있게 작성되지 않는 다면, 매번 그 작업에 대한 다른 작업을 할 때 일일이 확인하거나 실수를 유발할 수 있기 때문에 한 가지로 통일해서 작성하도록 하자.
/
로 구분지어 API를 작성한다면 새로운 API를 하나 더 만들게 되는 것이다. 이는 같은 중복의 코드가 많아지고 동일 테이블에 대한 API를 여러개 가지게 된다. 이런 부분을 /
로 구분짓는게 아닌 ?name=value
의 쿼리형식을 통해API를 통일키셔 작성하면 개발 코스트를 줄이고 가독성 높은 코드를 작성할 수 있을 것이다.
URI를 쉽게 읽고 해석하기 위해, 불가피하게 긴 URI 경로를 사용하게 된다면 하이푼(-
)을 사용해 가독성을 높일 수 있다. 언더바(_
)는보기 어렵거나 밑줄 때문에 문자가 가려지는 가독성 문제가 발생할 수있다.