2016-09-26 3 views
1

두 가지 모델, 직원 및 작업이 있습니다. empid 및 taskid는 두 모델의 기본 키입니다. 이 관계를 모델링하는 RESTful API를 설계하고 싶습니다.RESTful API 디자인 : 모델링 관계

나는 다음과 같은 설계의 생각 :

hostname/task GET : get all tasks 
hostname/task POST : post a tasks 
hostname/task/:taskid GET : get a certain task 
hostname/task/:taskid DELETE : delete a certain task 
hostname/task/:taskid PATCH : update a certain task 

하지만 내 문제는 모든 작업이 직원의 ID에 바인딩되어 있다는 것입니다 그리고 난이 표현하고자합니다.

그래서 내가이 동작을 모델링하는 방법을 받고 있지 않다이

hostname/task/:empid GET : all tasks for a certain ID 
hostname/task/:empid/taskid DELETE/PATCH/GET : delete/update or retrieve for a certain employees task 

해야한다.

답변

3

쿼리에 따라 다릅니다. 당신의 관계에 대해 명시하고 싶다면, 당신은 (그리고, IMO한다)는 다음과 끝점을 할 수 :

GET /employees/:empid/tasks 
DELETE /employees/:empid/tasks/:taskid 

을 그러나 고려하여 직원을 복용하지 않고 모든 작업을 조회 할 수 있도록해야하는 경우로 API를 소비자, 나는 당신이 어떤 인증 로직을 쓸 수

GET /tasks 
DELETE /tasks/:taskid 

소비자 "는에서 작업을 삭제할 수있는 적절한 권한이 있는지 여부를 결정하는 즉, 직원 태스크 엔드 포인트에서와 같은 방법을 가지고 기대 글로벌 수준 "을 유지할 수 있습니다.

+0

단수와 복수를 섞어 쓰지 마십시오! http://apigee.com/about/blog/technology/restful-api-design-plural-nouns-and-concrete-names –

+0

와우. 그것은 오타였습니다! 그 점을 지적 해 주셔서 감사합니다. – Dencker

+0

@Dencker : 안녕하세요, 응답 해 주셔서 감사합니다. 내가 URI에서 언급 명시 적으로 매개 변수로 EMPID을 통과 대신 할 수 EMPID/작업 : 나는 GET/직원/당신의 대답에 또 하나 개의 질문을했다? –