首页 新闻 会员 周边

RESTful api 当前用户资源uri设计怎么选择

0
悬赏园豆:30 [已解决问题] 解决于 2016-03-30 11:30
 有这样一种情况,会员的银行卡、会员的提现记录,会员的充值记录,这种属于当前用户下的记录
api(oauth认证) 设计成 
1、api/members/current/bankcards   从accesstoken获取当前会员id
2、api/members/{memberid}/bankcards   从uri获取
哪个好?
如果设计成1,似乎不符合 restful 风格
如果设计成2,岂不是当前登录会员可以请求其他其他memberid的银行卡列表,如果在action里再检查一遍 memberid 是否与 accesstoken 里的 memberid 一致,是否画蛇添足?
Mango_的主页 Mango_ | 初学一级 | 园豆:5
提问于:2016-03-29 18:25
< >
分享
最佳答案
0

 

你这两种设计都不是已授权用户获取自己的基本信息的 REST API,而只是类 REST API。

你设计的 1 风格的 URL,描述为“使用 Access Token 访问 current 的 bankcards”,那么这个 URL 的定义就“信息冗余”了,“current”是完全没有必要出现的。我假设你确实描述的是 OAuth 认证中访问用户资源的场景,那么你拿到的 Access Token 的含义是“Resource Owner允许我获取他的 bankcars 信息”,因此,下一步就是直接向 Resource Server 提交 Access Token,所以最佳的 API 设计是: api/members/bankcards?accesstoken=xxxxxxxxx。

收获园豆:20
Launcher | 高人七级 |园豆:45045 | 2016-03-30 10:32

你好,我的accesstoken是在header里的,也应该设计成api/members/bankcards?

Mango_ | 园豆:5 (初学一级) | 2016-03-30 10:34

用的owin实现oauth,action里没有accesstoken

Mango_ | 园豆:5 (初学一级) | 2016-03-30 10:35

@Mango_: accesstoken 可以放 url 上,也可以放 header,还可以放 body,不影响 rest api 的结构。

Launcher | 园豆:45045 (高人七级) | 2016-03-30 10:42

@Launcher: 好的,谢谢

Mango_ | 园豆:5 (初学一级) | 2016-03-30 10:44
其他回答(1)
0

设计很多时候是一种权衡,第1种是更合理的选择

收获园豆:10
dudu | 园豆:30994 (高人七级) | 2016-03-29 20:57

谢谢,当初就是看你写的OAuth才入了门

支持(0) 反对(0) Mango_ | 园豆:5 (初学一级) | 2016-03-29 21:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册