2016-11-29 3 views
1

말 마이크로 서비스로 설정된 몇 가지 API가 있습니다. 하나의 API는 사용자 (사용자 API)를 관리하는 것입니다 같습니다 여러 API의 유사한 끝점

/users     GET, POST 
    /{id}    GET, PUT, DELETE 

그런 다음 보안 정보 (액세스 역할, 권한 등)을 관리하는 데 사용되는 다른 API 및 user는 사용자에가 생성됩니다

API에는 보안 API에 정의 된 group을 지정할 수 있습니다. 보안 마이크로 서비스 또는 사용자 마이크로 서비스에서 이러한 연관성을 설정해야합니까?

내 초기 생각은 모든 응용 프로그램이 보안 정보를 요청하기 때문에 보안 마이크로 서비스에 있습니다.

/users/{id}/group  GET, POST, DELETE 

을하지만 사용자의 마이크로 서비스에 더 속하는처럼 그 엔드 포인트는 느낌 : 그와 함께하는 user가 하나의 group에 할당 할 수있는 것을, 나는 다음의 엔드 포인트와 함께 제공됩니다. 옵션을하는 다른 엔드 포인트는 다음과 같습니다

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

하지만 그 다음은 user 여러 그룹에 할당 할 수 있음을 보일 수 있습니다. 그러나 usergroup과 연결되어있을 때 이전에 연결된 group에서 연결을 끊을 수 있도록 디자인 할 수 있습니다.

내가 가장 잘 알고있는 이러한 유형의 API 호출을 처리하는 가장 좋은 방법은 무엇입니까?

답변

0

필자는 필연적으로 '올바른'방법이 없다고 생각합니다. 여기 내가 어떻게 접근 할 것인가. 을 바탕으로

: 사용자가 그룹에 관련 될 때, 그것과 관련된 이전에 있던 그룹에서 연관 해제하도록

그러나, 나는 그것을 디자인 할 수있다.

/groups/{id}/users  GET, POST, DELETE 
       /{id} GET, DELETE 

이 엔드 포인트는 그 Id에 몇 가지 문제가 바꿀 것 야기하고 따라서 다른 그룹에 사용자 전환 후 전화 URL을 변경해야합니다. 따라서 연속 호출은 새 끝점으로 이동해야합니다.

예를 들어 /groups/1/users/1이 유효 할 수 있지만 사용자가 그룹을 이동하면 /groups/1/users/1은 더 이상 결과를 반환하지 않습니다. 사용자가 그룹을 전환하면 엔드 포인트는 깨끗하고 선명하게 내 의견으로 유지하는 변경되지 않습니다

/users/{id}/group  GET, POST, DELETE 

: 지금 /groups/2/users/1

와 반면 될 것입니다.사용자는 여전히 동일하며 그룹이 사용자와 연결되어 있는지 분명하지만, 항상 내가 생각하는 id

으로 user에 대한 관련 group을 반환로 언급되는 내용 group 중요하지 않습니다 결론은 당신이 사용자에 대한 그룹을 얻는 경우 엔드 포인트가, 당신이 달성하려고하는 것을 반영해야한다는 것입니다 :

/groups/{id}/users  GET, POST, DELETE 
:

/users/{id}/group  GET, POST, DELETE 

또는 당신은 그룹의 모든 사용자를 받고있는 경우