2012-10-26 2 views
0

현재 서비스를 설계 중입니다. REST 인터페이스를 사용하여 여러 클라이언트의 데이터를 저장하는 다중 계층 서비스입니다.REST - 정식 URI와 상대 URI (사용자 관점)

URI 내부의 리소스 ID를 어떻게 받아 들여야하는지 분명하지 않습니다. 사용자 001이 자원을 생성한다고 가정 해 봅시다. 먼저 자원을 만들고 시스템의 경우 100 번째 자원을 만듭니다.

001 사용자가 /resource/1 (/resource/{id})으로 GET하면 어떻게 되나요? 자신의 레코드를 표시하여 요청을 수행하는 사용자와 관련된 URI를 작성해야합니까? 또는 시스템에 대해 첫 번째 값을 반환해야합니까 (볼 수있는 권한이 없어서 거부 했습니까?).

저는 허가서 안에 깊이 들어가고 싶지는 않지만 이런 상황을 어떻게 처리해야하는지 알고 싶습니다. 내가 후자를 선호한다면 어떻게하면 사용자가 "알았어요, 내가 만든 첫 번째 리소스를 제공하십시오"또는 "나에게 두 번째 ...", "마지막으로 ..", "내게 100 번째를 제공하십시오" 내가 만든 리소스 "?

답변

0

나는 REST에 대한 전문가가 아니라고 주장하지만 여기에 내가 할 일이있다. 도메인 모델에서

, 자원은 유래에 대한 링크가 제공 자원이 사용자없이 존재할 수있는 경우와 같은 반면에

GET /user/{userId}/resource //Gets all resources of a user 

로 URL 호출을 모델링 한 후 그 완벽 OK 사용자 없이는 존재할 수없는 경우 그러한 호출을 모델링하는 좋은 방법입니다.

RESTful Many-to-Many possible?

우리는 우리의 프로젝트 중 하나를 위해 한 또 다른 것은 우리가 연결 테이블 (은 UserResource 테이블 (ID, userId를, RESOURCEID)를 가지고 있었고, 우리가에 대한 고유 ID를했고 같은 것을했다이었다 보안이 우려 경우

GET /userResource/{userResourceId} 



GET /userResource    //Retrieve all the resources user has access to 

, 보안을 통합하는 방법에 StackOverflow에 대한 링크가 나머지 당신은 일반적으로 REST의 URL에 그 논리를 넣어 싶지 않아요. 이상적으로 이러한 로직은 서버 측에서 처리되어야한다. 호출에 있습니다 .

가 예를 들어, 사용자가 누구인지에 따라

GET /resource //Get all resources 

위해 전화를받을 경우, 당신은 단지 그가에 액세스 할 수있는 자원의 일부를 반환합니다.

결론 : 사용 권한 주위에 리소스를 구축하지 마십시오.

이번에도 전문가는 아닙니다. 내 겸손한 견해. :-)

+0

"권한을 중심으로 리소스를 구축하지 마십시오"는 것은 무엇을 의미합니까? –

+0

그리고/resource에 대한 일반 GET 요청을 처리하면 어떻게 사용할 수있는 모든 리소스를 나열 할 수 있습니까? –

+0

1) get 리소스가있는 경우 url은 GET/resource/id와 같아야하며 사용자 ID가 포함되어서는 안됩니다. 물론 리소스가 특정 사용자에게 속하지 않는 한. 2) 제네릭 get 요청은 GET/resource와 같을 것입니다. – smk