2014-01-17 3 views
0

의 우리가이 나머지 인터페이스는 서버의 관리자의 사용을 처음 생성 된 계정 자원소비자에 따라 다른 REST 인터페이스가있는 것이 맞습니까?

Admin/Account/Get 
[Authorize(Admin)] 
public ActionResult Get(id) 
{ 
    if(id > 0) 
     return _userService.Get(id); 
    else 
     return _userService.GetAll(); 
} 
public ActionResult Post(account) 
{ 
    return _userService.Save(account); 
} 

의 REST 인터페이스를 가지고 있다고 가정 해 봅시다. 그래서 처음에는 전용 api입니다. 더 나은 점은 무엇입니까? 같은 리소스에 다른 인터페이스를 만들려면 있지만 다음과 같은 공개 API (다른 소비자)에 대한 :

Account/Get 
[Authorize] 
public ActionResult Get() 
{ 
    return _userService.Get(user.Id); 
} 

또는 그것은이다이

Account/Get 
[Authorize(Admin, Users)] 
public ActionResult Get(id) 
{ 
    if(admin){ 
    if(id > 0) 
     return _userService.Get(id); 
    else 
     return _userService.GetAll(); 
    } else { 
     return _userService.Get(user.Id); 
    } 
} 
public ActionResult Post(account) 
{ 
    if(admin) 
     return _userService.Save(account); 
    return null; 
} 

같은 동일한 자원에 대해 동일한 인터페이스를 만들 소비자와 관계없이 동일한 리소스에 대해 동일한 인터페이스를 갖는 것이 좋습니다. 또는 소비자가 다른 권한을 가지고 있다면 다른 휴식 API를 갖는 것이 더 낫습니다. 왜?

답변

0

일반적으로 특정 인터페이스가 더 취약하기 때문에 특정 인터페이스를 많이 사용하는 것보다 일반적인 인터페이스가 더 적습니다. 즉 소비자의 모든 작은 변화가 특정 인터페이스를 변경하기 쉽습니다. 또한 서버 측에서 변경하기 때문에 서버 측에서 유지 관리하기가 더 어렵습니다. 이제는 더 많은 인터페이스를 업데이트해야합니다 (이전 버전을 유지하는 것은 말할 것도 없음).

단일 인터페이스 또는 적어도 그룹/유형으로 일반화하려고합니다. 소비자

관련 문제