2016-12-20 2 views
1

공용 및 개인 응답이있는 리소스가 있으며 결정적인 상황에있는 일부 사용자 만 개인 응답에 액세스 할 수 있습니다.RESTful API에서 공용 및 개인 리소스를 관리하는 방법

최상의 구현은 무엇입니까?

  1. 두 개의 URL, 대중을위한, 다른 하나는 민간에 대한 : resource/{id}resource/{id}/private.
  2. 동일한 URL, 각 사용자마다 다른 응답 : resource/{id}.
  3. 공개 및 비공개가 다른 동일한 URL 및 매개 변수 : resource/{id}?private=true.
  4. 기타?

답변

1

용어가 약간 섞여 있습니다. 하나의 리소스와 복수 개의 representation이 있습니다. 리소스에는 정식 위치 (URL)가 하나 있어야합니다. 다른 사용자가 자신의 인증 수준을 기반으로 다른 표현을 얻는 것이 좋습니다.

사용자가 리소스의 특정 표현을 요청할 수있게하려면 몇 가지 옵션이 있습니다. 맞춤 MIME 유형을 사용하는 경우 Accept 헤더가 최선의 선택입니다. 맞춤 MIME 유형을 사용하지 않는 경우 쿼리 매개 변수가 최선의 방법이지만 애플리케이션 전반에 걸쳐 일관성 있고 일관된 내용인지 확인해야합니다. ?private=true을 사용하지 말고 대신 ?representation=public과 같은 것을 사용하십시오. 이를 통해 나중에 표현을 추가하고 동일한 매개 변수를 사용할 수 있으며 동일한 질의 매개 변수를 표현을 지정해야하는 다른 자원과 공유 할 수 있습니다. 별도의 URL을 사용하지 마십시오.

0

IMO 하나의 resource에는 URL이 하나만 있어야합니다. HTTP의 인증 토큰을 사용하여 서버가 private 응답 또는 public 응답으로 응답해야하는지 확인할 수 있습니다. 또한 일부 사용자가 승인되지 않은 리소스를 요청하는 경우 4xx 상태를 보낼 수 있습니다.

따라서 resource/{id}이 좋은 선택 인 것 같습니다.

관련 문제