221028 TIL REST API URI설계

오늘은 글 작성 기능 구현을 목표로 작업 설계를 시작했다.

글 쓰기에 대한 인수 테스트 작성부터 하고 useForm을 이용해서 글 작성 폼을 만드는 것을 먼저 하는 것으로 순서를 잡았다.

글 작성시작성 시 기본적으로 필요한 내용으로는 글 제목, 글 내용, 카테고리 선택 그리고 사진은 선택사항으로 계획했고 글 작성 페이지의 URI는 write로 정했다. 그래서 REST API 설계 시에도 게시글 작성 시 URI를 POST /write로 정했었다. 그런데 REST API 설계 시에 규칙이 있다는 것을 알게 되었고, 내가 사용한 write가 동사형태라 설계 규칙에 위반되었기 때문에 /post로 바꿔야 했다.

 

REST API URI설계시 유의할 점

URI는 정보의 resource(자원)를 표현해야 한다.

 

1. 리소스를 표현하기 위해 동사보다는 명사를 사용

RESTful URI가 가리키는 리소스 URI 가능하다면 리소스 URI는 동사(리소스에 대한 작업)가 아닌 명사(리소스)를 기반으로 해야 한다.

 

2. 소문자를 사용한다.

주소에서 대소문자를 구분하기 때문에 카멜 케이스 방식이 아닌 소문자를 사용해서 작성해야 한다.

 

3. URI에 마지막 슬래쉬는 포함하지 않는다.

 

4. 가독성을 높이기 위해 언더바(_)대신 하이폰(-)을 사용한다.

 

5. 자원에 대한 행위는 동사가 아닌 HTTP Method로 표현한다.

BAD -> POST http://seungjjun.tistory.com/users/delete-post/1
GOOD -> DELETE  http://seungjjun.tistory.com/users/post/1

 

이렇게 REST API URI를 설계할때 규칙이 있다는 것을 몰랐다면 그냥 대충 지을 수도 있는 URI를 규칙을 통해 내가 표현하려는 자원에 대해 한번 더 생각해보게 되었다.

 

아무튼 오늘은 글 작성하는 기능을 구현했다. 생각보다 작업 속도가 느린데 그 이유가 작업하기 전에 설계하는 시간과 중간중간에 만난 예기치 못한 에러를 해결하느라 시간을 많이 소비했다. 그리고 아직 이미지 업로드 기능도 구현하지 못해 반만 완성된 상태라 찝찝함이 묻어져 있는 상태이다. 내일은 글 작성할때 이미지도 업로드할 수 있는 기능 구현을 목표로 하자!