2012-10-03 1 views
0

두 개 이상의 다른 방식으로 동일한 RESTful 리소스 (모델)가 연결된 경우에 적합한 URL 경로가 나오지 않는 문제 다른 편안하고 자원과, 예를 들면 :동일한 관련 모델/테이블에 대해 서로 다른 이름으로 여러 연관이있는 경우 중첩 된 리소스 경로

  • 가 직관적으로 TrainingSession 모델은 직원에 대한 연관있는 trainer_id이있는 특정 트레이너와 관련된 교육 과정의 모든 인스턴스를 조회 요청을 나타내는 URL 경로를 지정 모델.
  • TrainingSession 모델에 Employee 모델과의 연관성이있는 trainee_id가있는 특정 연수생과 관련된 모든 교육 세션 인스턴스를 조회하는 요청을 직관적으로 나타내는 URL 경로를 지정하십시오.

    • /trainees/1/training_sessions : 그들은 실제 자원 없습니다 (단 TrainingSession 및 직원이) 있기 때문에 잘 될 것 같지 않습니다 "연수생"또는 URL의 경로에 "트레이너", 포함

  • /trainers/1/training_sessions

그러나, "직원"을 사용하여 너무 모호하며 중 하나를 의미 할 수있다 :

  • /employees/1/training_sessions

당신은이 노선/경로 및 이유를 무엇을 제안?

답변

2

실제로 연수생과 강사를 사용하는 것은 전혀 잘못된 것이 아닙니다.

귀하의 연수생과 강사 두 URL은 제공 한 ID를 사용하여 연수 자/강사 데이터를 찾은 직원 컨트롤러 기능에 매핑 할 수 있습니다. 네가 왜 그렇게 할 수 없었는지 나는 모르겠다. 그것은 단순히 똑똑한 URL 연출입니다.

연수생과 강사에 대한 정보를 별도로 저장해야하는 경우 별도의 모델이 필요합니다. 그러나 TrainingSession에 직원 ID로 직접 매핑되는 수강생 ID와 강사 ID가 있고 강사 및 강사에 대해 다른 것을 저장할 필요가없는 경우 언급 된 접근법을 사용할 수없는 이유는 알 수 없습니다.

편집 : 다음은 철학의 문제이므로 크게 논쟁의 여지가 있습니다.

API 사용자에게는 REST 원칙이 있다고 생각합니다. 따라서 사용자가 연수생 자료 및 강사 자료가 있으며이를 조작 할 수 있다는 것을 알게되면 REST가됩니다. 내부 구현 방법은 MVC를 사용하는 것이 선택입니다. 좋은 방법은 MVC 원칙을 사용하는 것이지만 원칙은 지침이며 모든 상황에 황금률 규칙을 적용 할 수는 없습니다. 나는 가상 리소스를 만드는 것이 좋다고 생각하며 그들 자신의 모델/컨트롤러에 매핑 할 필요가 없다.

0

교육 세션이 다른 리소스로 표시되고 검색 매개 변수 searchType 및 employeeId를 기반으로 교육 세션을 검색하고 있습니다.

/trainingsessions?searchby=trainer&employeeId=xyz@GET은 연수자 세션을 제공해야합니다.
/trainingsessions?searchby=trainee&employeeId=xyz 연수생 세션을 제공해야합니다.

관련 문제