2016-09-18 5 views
3

저는 API 구현이 처음부터 새로 도입되어 API 구조의 표준 또는 최선 접근 방식에 대한 조언이 필요했습니다. 중첩 라우터 대 필터

현재 내 구현은 중첩 된 라우터 (DRF-중첩 된 라우터 패키지)을 포함 같은

"www.thissite.com/store/21/products/1/"나는에 깊이 파고로 이제

장고 나는 날이

"www.thissite.com/products/?store__id=21 & ID = 1"

같은 좀 덜 코드로 위의 동일한 작업을 할 수 있도록 필터가 있다는 것을 발견했습니다

제 질문은 어떤 것이지요. 모범 사례와 그 이유는 무엇입니까?

답변

0

제품이 항상 상점과 관련된 경우 (이름이 주어진 경우), products의 하위 리소스를 stores으로 만들어 계층 구조를 유지하는 것이 우수 사례로 간주됩니다. 따라서 저는 앞에서 언급 한 첫 번째 접근 방식을 따르라고 제안합니다.

필터링은 다른 리소스와의 관계를 기반으로하지 않고 일부 내부 특성 (예 : 클래스 특성)을 기반으로 리소스를 필터링하는 데 사용해야합니다.

+0

감사합니다. 나는 그렇게 할 것입니다. :) –

0

REST는 URI 디자인을 제한하지 않기 때문에 둘 다 모범 사례입니다. 나는 www.thissite.com/store/21/products/1/ 계층 URI 디자인과 www.thissite.com/products/?store__id=21&id=1 플랫 URI 디자인이라고 부른다. 평면 디자인이 더 좋지만, 그건 내 개인적인 취향입니다. 제품을 식별하기 위해 store-idproduct-id이 모두 필요하면이 URI는 괜찮습니다. 이러한 변수는 URI가 모두 유효하므로 예 : x/y/z/:pid/q/r/s/:sid 등 ... REST에 의해 URI (템플릿) 생성은 서비스의 책임입니다 클라이언트는 하이퍼 링크 형식으로 서비스에서 가져온 URI 만 사용합니다. 그래서 REST 클라이언트 관점에서 URI 구조는 중요하지 않다. 우리는 REST 서비스 라우팅 로직을 명확하게 유지하기 위해서 멋진 URI를 디자인하는 경향이있다.