Many-To-Many
과 관련된 2 개의 리소스가 있습니다. 하나의 리소스는 users
이고 다른 리소스는 roles
입니다. user
은 다른 roles
을 할당 할 수 있지만 role
은 다른 users
을 할당 할 수 있습니다.REST 호출을 통해 리소스 A를 리소스 B에 매핑하는 방법은 무엇입니까?
/users
모든 사용자 돌아갑니다
/roles
Many-To-Many
관계는 나에게 다음과 같은 리소스 경로를 사용할 수 있습니다 모든 역할
반환합니다에 할당 된 모든 역할을 반환합니다
/users/1/roles
을 id가 1 인 사용자/roles/1/users
1
이제 ID로 역할에 할당 된 모든 사용자를 반환의가 나는 두 개의 서로 다른 아이디어가 1
ID로 사용자 ID 2에 역할을 할당 할 말을하게됩니다 :
-
을
PUT /users/1/roles/2 (No request body, as no use)
. 이 접근법은 매우 읽기 쉽고 명확하게 멱등 할 것입니다. 또한 나는 응답을 기대하지 않는다. 그러나 PUT 요청과 함께 요청 본문을 보내지 않는 것이 이상하게 보입니다.POST /users/1/roles (Role object as request body)
이 접근법은 기술적으로 더 정확합니다. 그러나 이미 기존 역할을 매핑하고 싶지는 않습니다. 이 사용자의 역할을 더 많이 만들었습니다. 또한 요청에 이미 존재하는 역할을 첨부하는 것은 매우 쓸모없는 것처럼 보입니다. ABadRequest
은 존재하지 않는 역할을 추가하려고하기 때문에 매우 혼란 스러울 것입니다.
모두이가 이해할 수있는 REST에서 수행되는 방법
이 방법을 준수 ... 나에게 정말 올바른 실제로없는 것?
이것은 내가'GET 할 필요가 있음을 의미/사용자 :
또한, 여기에 추가되어 내가 유용 동료로부터 조언 'PUT/users/1/roles'로 다시 보내십시오. 나는 이것에 관해 모른다. –
예. 이것이 일반적인 패턴입니다. –
필자도'Roles'와'Permissions.'를 가진 동일한 별자리를 갖게 될 것입니다. 전체 시스템은 그들 자신의 허가를 정의 할 다른 서비스를 가질 것입니다. 시스템이 커짐에 따라 역할이 100 개가 넘는 권한을 가질 수 있습니다. 이제 권한을 추가하려면 필요한 많은 데이터 전송이 필요한 것 같습니다. 정말 팔리는 것 같지 않습니다. –