2013-08-27 3 views
0

REST 인터페이스의 요구 사항 중 하나는 각 리소스를 고유 식별자 (기본 식별자 제외)로 식별 할 수 있어야한다는 것입니다. 그 이유는 대량 가져 오기 데이터를 처리 할 수 ​​있기를 원하기 때문입니다.이 경우 클라이언트는 시스템에서 생성 한 기본 식별자를 알 수 없습니다.RESTFul 고유 필드가있는 리소스를 참조하는 방법

이것은 고유 한 필드로 리소스를 참조 할 수 있어야한다는 것을 의미합니다. 기본 키 사용하여 우리의 읽기 요청은 다음과 같이 :

GET example.com/rest/customers/1 

하고 고객 이제

GET example.com/rest/customers/1/orders 

관련 주문을 얻을 수있는, 이름을, 고유하게 식별 ("foo는"고객의 두 필드를 가정 할 수 있습니다) 및 businessId ("bar"). 나는이 고객의 주문을 얻기 위해 다음과 같은 URI를 내놓았다 것을 감안할 때 :

GET example.com/someotherpath/customers/foo,bar/orders 

그러나 나는이 독특한 필드를 통해 액세스되는 자원임을 식별 할 수있는 다른 경로를 가지고 좋아하지 않는다. 기본 키 대신 고유 필드를 사용하여 RESTful 방식으로 위 쿼리를 구조화하는 방법은 무엇입니까?

또한, 순서는 다음과 같습니다

{ 
    <SNIP> 
    "orderId" : "42" 
    "_links": { 
     "customer": { 
      "href" : "rest/customers/1" 
      "key": [ "foo", "bar" ] 
     } 
    }, 
} 

모든 문제를 상호 교환 또는 키 인터페이스와 통신 할 때 HREF 지정에 클라이언트를 허용하기로?

+0

참고로 인터페이스의 RESTfulness는 리소스 표현에 액세스하는 데 사용 된 경로와 아무 관련이 없습니다. 여러 경로가 동일한 리소스를 가리키는 것이 허용됩니다. –

답변

1

첫 번째 비트의 경우, 나는하지 않을 것입니다. 고객이 고유 한 ID를 보유하고 있어야한다면 최종 사용자가 고객을 고유하게 식별하는 N 개의 다른 필드를 지정할 수 없습니다. 그것은 사용자에게 지저분하고 (어떤 필드가 먼저 나옵니까?) 백 엔드에서 당신을 지저분하게 만듭니다.

두 번째 비트의 경우 문제는 두 가지를 모두 지정하면 어떻게됩니까? 어떤 것이 우선합니까? 그들이 기억할 건가요? 둘 다 지원해야합니까? 일반적으로 한 가지 방법으로 특정 작업을 수행 할 수있는 경우에만 허용하는 것이 좋습니다.

관련 문제