2012-09-26 10 views
2

Google 비즈니스 시스템 용 휴식 API를 개발 중입니다. API가 완료되면 REST API를 구성하는 방법은 무엇입니까?

/sales/orders 
/sales/orders/{orderno} 
/sales/order-items 

자원이 많이있을 것입니다, 그래서 우리는 이해하기 쉽게 만들 수있는 좋은 방법으로 구조화해야합니다 우리는 지금까지 다음과 같은 자원을 가지고있다. 내 질문 : /sales/order-items 대신 /sales/orders/order-items해야합니까? 여기에 정답이 없을 수도 있지만, 무엇을 원하십니까?

하나 더 질문 : sales/order-items 리소스는 모든 미결 항목 또는 모든 선적 된 항목을 나열합니다. 상태 (출하/출하)에 관계없이 이 아닌을 모두 주문할 수 있습니다. 리소스 URI는 다음과 같을 수 있습니다 sales/order-items?orderstatus={OPEN/SHIPPED} (orderstatus 쿼리 매개 변수는 이어야하며 그 다음은입니다) 또는 sales/order-items/opensales/order-items/shipped과 같은 두 개의 리소스가 될 수 있습니다. 무엇이 선호됩니까?

+0

마지막으로/sales/아래에 많은 리소스가 있습니다./sales/customers/sales/contracts, sales/quotes와 비슷합니다. – rgullhaug

+0

/sales/order-items 리소스가 실제로 무엇인지는 분명하지 않습니다. 그것이 속한 순서에 관계없이 모든 주문 항목의 목록을 제공합니다. 특정 주문에 대한 항목 만 얻으려면 다음과 같은 리소스도 있어야합니다./sales/orders/{orderno/items – rgullhaug

답변

1

리소스는 '명명 할 수있는 모든 정보'입니다. URI는 엔티티 기반이어야합니다. 'order-items'은 엔티티가 아니라 데이터 유형입니다.

/sales/order/order-1456321은 가장 가능성있는 엔터티입니다. 모든 주문 항목의 데이터가 포함됩니다.

액세스를 제한하려면 쿼리 문자열이 제공되지 않으면 클라이언트 오류를 ​​반환 할 수 있습니다. 및 가지고있어

/sales/order/order-12345?status=open 

등 희망이 도움이됩니다.

편집 :

/sales/order-items or /sales/orders/order-items? 

이 도메인 특정, 정말 도메인 전문가에 의해 응답해야한다. URI 계층 구조는 리소스에 범위 (및 세부 사항)를 제공합니다. 교양있는 추측으로, "주문 품목"이 "주문"이 아니기 때문에 "주문 품목"을 "/ 판매/주문 /"의 범위 내에 포함하는 것은 이치에 맞지 않습니다.

/sales/ordered-items 

이 가장 현명한 대답입니다.

귀하의 도메인에 과도하게 질문하지 않으려는 경우, 비즈니스의 흐름과 저장된 정보를 강력하게 이해하면 이러한 제안 사항에 따라 뭔가가 발생할 수 있습니다.

/sales/orders?status=open - Are all orders shipped at once? 
/sales/orders/order-1234/packages?status=open - Are orders split into packages? 
+0

정말/판매/주문 항목이 실제로 무엇인지 명확하지 않았습니다./sales/orders/{orderno}/items는 특정 주문에 대한 모든 항목을 제공하지만/sales/order-items은 주문과 관계없이 모든 주문 항목의 목록을 제공합니다. 그런 다음 주. 항목은 주.이 엔티티 인 것과 같은 f 식의 엔티티입니다. – rgullhaug

+0

아, 예, 이해합니다. 내 대답을 편집합니다 –

+0

당신이 정확할 수도 있습니다. 주문 항목은 주문이 아니지만 주문 항목은 주문에 속합니다. 하나의 주문에는 1 ~ 여러 개의 주문 항목이있을 수 있습니다. 주문 항목은 상위 주문과 상관없이 판매/주문 항목을 사용하여 검색 할 수 있습니다. 따라서이 주문/판매/주문/주문 항목과 같은 주문에 따라 주문 항목을 배치하는 것이 완전히 잘못되지는 않을 것이라고 생각합니다.주문을 받고 싶은 유일한 이유는 내 API에 대한 구조를 좀 더 만드는 것이므로 주문과 관련이있는 모든 것이/sales/order 아래에 있지만 좋은 생각이 아닐 수 있습니다. – rgullhaug

관련 문제