2013-04-12 1 views
7

큰 리소스 고객을 다루는 REST API가 있습니다. 클라이언트는 때때로 고객의 약어/요약 표현을 원합니다. 요청이 요약 표현을위한 것임을 나타내는 좋은 방법은 무엇입니까? REST API에서 리소스의 요약 표현을 요청하는 가장 좋은 방법은 무엇입니까?

고객 (123)에 대한 전체 표현을 얻으려면 그 : 요약 표현 /customers/123/summary 좋은 방법입니다 /customers/123

얻으려면? 더 좋은 옵션이 있습니까?

답변

4

솔루션을 재사용하고 유연하게 만들기 위해 "필터"쿼리 매개 변수를 구현하는 것이 좋습니다. 거기에서, 클라이언트에 필요한 필드를 넣을 수 있습니다 :

GET /customers/123?fields=id,first_name,last_name,email 

을 그런 식으로 나중에 다른 작업에 대한 다른 요약을 작성해야하는 경우, 당신은 수정 아무것도 할 수 없습니다.

유연하지 않기 때문에 /customers/123/summary을 권장하지 않습니다. 하나의 경우에는 괜찮지 만 클라이언트가 다른 사례에 대해 다른 속성에 액세스해야하는 경우 리소스를 조정해야합니다 (필요한 것보다 많은 필드를 반환 할 가능성이 큽니다).

GET /customers/123?view=DESCRIPTION 

는 "DESCRIPTION은"요약의 유형을 설명합니다 : 당신은 필드 이름을 "숨기기"할 경우, 아마도 대안은 다음과 같이 될 수 있습니다. 예 :

GET /customers/123?view=addresses_only // eg. returns billing and home address 
GET /customers/123?view=short // eg. returns only id, first name, last name 

새보기를 쉽게 만들 수 있으므로 유연합니다.

+0

제안에 감사 드리며 유연한 방법을 알 수 있습니다. 이 접근 방식에 대한 한 가지 우려는 고객이 고객 리소스에 사용할 수있는 필드를 알고 있다고 가정한다는 것입니다. – BobJ

+0

두 경우 모두/summary 또는 /? field = ... 여부와 상관없이 클라이언트와 URL을 공유해야합니다. 사용자가 직접 URL을 제공하면 사용 가능한 필드를 알 필요가 없습니다. 내 게시물을 다른 가능한 해결책으로 업데이트했습니다. –

+0

덕분에 나는 좋아? view = short approach – BobJ

관련 문제