面向管理员和非管理员帐户设计api的问题。我遵循MVC模式,其中控制器将映射到一个uri。管理员和非管理员帐户的Restful api设计
化妆场景:
让我说有一个系统,允许用户在花钱购买商品并收集积分后兑换礼物。
我的系统有一个用户配置文件,礼物和兑换表。 每个用户都可以兑换很多礼物,每个礼物都可以被很多用户兑换。 (兑换是交接表)。
要访问用户简档,则URI将是这样的:
GET /用户/ 0001
要兑换礼品
POST /用户/ 0001 /赎回{ “量”:1, “地址” :“旧地址”}
一切看起来不错,整齐到这一点。现在的问题出现时的赎回需要由管理员用户
所以被批准更新赎回已批准状态
PUT /用户/ 0001 /赎回/ 100 {“地位”:“批准”}
用户可以更新送货地址,其中礼物将要运到
PUT /用户/ 0001 /赎回/ 100 {“地址”:“新地址”}
现在我面临着以下问题:
1)如果2路径指向uri,控制器将有2个不同的处理代码在同一个函数中.1如果阻塞为admin,则为1则阻塞用户。
如果我在uri前面添加一个管理员(admin/user/0001/redeem/100)。 2个不同的路径将识别相同的资源。
2)在授权标头(Authorization =“USERNAME:SECURITY_HASH”)上标识用户身份。这是一种典型的宁静方式吗?
3)我无法区分用户角色,因为管理员和用户存储在不同的表中。所以如果uri表明用户角色,这将使事情变得更容易。我不希望在用户之前总是查询管理表。
感谢您的迅速回复。对无状态的压力意味着会话cookie将违反约束条件。 Restful也不建议将动词用于动作。批准可以用幂等投入法替代。 – user3766391