假设我们有一个帐户资源的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接口最初是为使用服务器的Admin而创建的。所以起初只是一个私人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;
}
不管消费者如何,最好为同一资源提供相同的接口。或者,如果消费者拥有不同的权限,最好使用不同的rest API?为什么呢?
答案 0 :(得分:0)
一般来说,由于更具体的接口更脆弱,因此通用接口比许多特定接口更少更好,即消费者中的每一个小变化都可能也改变特定接口。它们在服务器端也很难维护,因为进行更改意味着您现在必须更新更多接口(更不用说让旧版本保持活动状态)
尝试推广到单个界面或至少推广到消费者群体/类型