이번 프로젝트에서 가장 많이 얻은건 아마 어떻게 RESTful한 API를 구현할까에 대한 고찰이였습니다.
이번프로젝트의 End Point
이번 프로젝트에서 얻은것 중 하나는 바로 RESTful API에 관한 고찰이였습니다.
이번 프로젝트에서 저의 실수를 하나씩 회상하며 블로그를 작성하려고 합니다.
상품 상세정보 # Products/<int:product_id>
초기 엔드포인트 설정시에는 몇가지 잘못된 생각을 가지고 있었습니다.
- wish-korea/products 이라는 엔드포인트는 상품들을 가르키기에 충분하지 않은가!?
- 내가 가지고 있는 리소스는 상품들 이니까 ProductsView로 설정하는게 맞겠지!?
첫번째
/products라는 상품들이라는 복수형태의 리소스를 가르키지만
실제로는 1개의 상품에 대한 정보를 제공하는 상세정보 페이지이기에 단수형을 가르켜야 합니다.
두번째
Products는 상품에대한 모든 리소스를 표현합니다.
하지만 path params를 사용한다면 전체상품중 1개를 특정하게되어서 단수의 리소스를 가르키는 ProductView를 향하게 됩니다.
카테고리(Nav바) # products/categories
프로젝트 시작시 많은사람들이 Nav바에 관심이 많았습니다.
저도 당연하게 Nav바 Nav바 지칭하고 다녔고 최초로 설정한 엔드포인트는 아래와 같았습니다.
- wish-korea/products/navigator NavigatorView
REST 서비스의 경우 서버는 일반적으로 URL(Uniform Resource Locator)을 사용하여 리소스 식별을 수행합니다. URL은 리소스에 대한 경로를 지정합니다.
너무 기본적인 RESTful API의 규칙을 지키지않는 오류를 범했습니다.
Nav는 저희가 사용하는 어떤 리소스와도 연관없는 키워드 였습니다.
이를 깨닫고 반영한 엔드포인트는 아래와 같습니다.
- wish-korea/products/categories CategoryView
상품리스트 with filtering # products
이번의 엔드포인트는 나름 잘 설정하였습니다.
- wish-korea/products CategoryListView
View 클래스의 컨벤션을 CategoryList로 하였는데 카테고리들의 나열이 아닌 프로덕트의 나열이기에 ProductListView가 올바르다고 변경하였습니다.
- wish-korea/products ProductListView
지금생각하면 정말 단순한것을 놓친것 같습니다.
Cart & Carts
장바구니에 관련한 엔드포인트입니다.
- delete : 삭제기능의 경우 단일 삭제 , 부분삭제, 전체삭제가 가능합니다 carts? cart?
- get : 당연히 carts!!
- post : 다수의 제품을 동시에 담을 수 있기에 carts로 하였습니다.
- patch : 수정은 한번의 클릭으로 한개의 item만 수정이 가능하기에 cart로 갑니다.
사실 이부분에서 delete를 가장 많이 고민했습니다.
처음에는 아래와같은 엔드포인트를 설정하였습니다.
- 단일삭제 : wish-korea/orders/carts/<int:cart_id> CartView
- 전체삭제 : wish-korea/orders/carts CartsView
'프로젝트 > 위코드' 카테고리의 다른 글
[Fake Trip]2차 프로젝트 회고록 (0) | 2022.07.19 |
---|---|
[Wish Korea]프로젝트 회고 (0) | 2022.07.03 |
[Wish-Korea] 프로젝트 ERD (0) | 2022.06.26 |
[Wish-Korea] Start!!! (0) | 2022.06.26 |