하이퍼 텍스트 제약으로 하이퍼 미디어 API, 예를 들어 RESTful API를 설계하고 있습니다.RESTful HTTP : 동일한 URI에있는 두 명의 사용자에게 서로 다른 표현 표시
시스템의 각 사용자는 자신의 자격 증명을 사용하여 시스템에 액세스하므로 우리가 처리하는 모든 요청은 인증되고 인증됩니다. 각 사용자는 일반적으로 특정 자격 증명을 가지므로 각 컬렉션에서 다른 권한 (예 : 없음, 읽기, 읽기/쓰기)을 가질 수 있습니다.
우리는 클라이언트가 시작하는 하나의 URI, 아마도 원자 서비스 문서 또는 원자 집합의 계층 구조 (초안 원자 계층 구조 확장) 일 수 있기를 원합니다.
내 질문에 기본적으로 사용자가 같은 URI에 대해 다른 표현을보아야합니까? 아니면 사용자가 자신의 권한을 기반으로 다른 URI로 이동해야합니까?
예 : 사용자 A와 사용자 B는 시스템에서 다른 사용 권한을가집니다. 다른 자격 증명으로 동일한 시작 URI에 로그인합니다. 성공적인 응답은 다음 (2)의 하나 일 수있다 :
- 200 OK 및 사용자 A는 동일한 URI
- (302) (또는 다른 리디렉션)에 사용자 B보다 다른 일 예를 들면 각 사용자 본다/엔드 포인트/사용자 A (자신이 소유하는)
캐시 가능성 사이의 트레이드 오프는 자원이 클라이언트가 아니라 중개인 만 캐시되기 때문에, 물론 최소한의, 그러나 너무 가시성에 대한 트레이드 오프있다 (URI 포함 (aythenticated) 사용자 ID). 마지막으로 사용자 A (또는 수퍼 유저)가 사용자 B가 보는 것을 보도록 허용 할 미래의 가능성이 있습니다.
나는 트위터 나 페이스 북이하는 일을 묻지 않고, REST 실습가들이 이것에 관해서 이야기해야 할 것에 더 관심이있다. (200)로 회신
둘 다 똑같이 유효하며 REST 제약 조건 내에서 쉽게 수행 할 수 있습니다. 나는 그 질문이 "사용자 별 리소스"를 더 많이 포함해야한다고 생각하지만, 응답을 색칠했을 것입니다 : 일부 리소스는 실제로 사용자마다 있습니다 : 홈 페이지 (예 : 트위터 또는 페이스 북의 홈 페이지)는 사용자와 꽤 다릅니다 사용자에게 보내지 만 각 리소스 (예 : twitter 또는 fb 프로필 페이지)는 거의 동일합니다. – mogsie
@mogsie 트위터와 페이스 북과 같은 사이트의 사회적 특성으로 인해 사용자의 개념은 매우 첫 번째 수준의 리소스입니다. 이런 경우에는 모든 홈페이지에 자체 리소스가 있어야한다고 생각합니다. 예 : 'http://twitter.com/user/darrelmiller/home' –
이걸 API에 적용하면 URL/user/darrelmiller/home을 클라이언트에 주입하겠습니까? 또는 모든 클라이언트에 동일한/home 자원을 주입하고 인증 후/home/home/home에 항상/home/darrelmiller/home으로 리디렉션 하시겠습니까? – mogsie