Soft_Job 板


LINE

各位好,我正在设计公司的 RESTful api,遇到一个身份判定的问题有点卡住,想请教一下各位 假设我今天要拿到一个 team 里面我这个 user 的 profile,该怎麽下比较好 1. teams/{team_id}/users/profile 2. teams/{team_id}/users/me/profile 3. teams/{team_id}/users/{user_id}/profile 会有这个问题是因为,一般 RESTful 都是表定是 me 了,登入後用在 header 的 token 拿取属於你的资料 这个定义的情况下 1 感觉是最接近的,但 users 下没有指定对象又感觉很怪,毕竟 users 是复数 假设 2 成立,那我 teams 想要一支 api 也透过 user_id 找其他人 profile 的话 3 跟 2 route 会打架 3 如果带上自己 user_id 可以解决全部问题,但又失去了直接比对 jwt token 的便利性 for me: teams/{team_id}/me/profile for someone: teams/{team_id}/users/{user_id}/profile 如果上述成立,另一个模组是 users,专门处理 user 的内容,以忘记密码举例 for me: users/me/forgot-password for someone: users/{user_id}/forgot-password 这 route 又打架了 XD,不确定表达的好不好,目前就是卡在该怎麽在如何在 url 上可以明确看出这只 api 对到的是你或者是某个指定对象,route 不冲突但也可以兼顾直接拿 jwt token 来用,谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.234.173 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1611666924.A.6AB.html ※ 编辑: chan15 (122.116.234.173 台湾), 01/26/2021 21:15:40
1F:→ MOONY135: 有要开放查其他人的话3应该好一点吧 01/26 21:36
2F:→ MOONY135: 你要开放可以查其他人为什麽要选2只是为了jwt token 01/26 21:39
3F:→ MOONY135: 的便利性? 01/26 21:39
4F:→ MOONY135: 然後你自己想想你的忘记密码举例 到底是针对自己 还是 01/26 21:40
5F:→ MOONY135: 开给後台操作人员做的 01/26 21:40
6F:→ MOONY135: 2跟3其实可以不互斥 自己查自己的资讯内容跟 01/26 21:42
7F:→ MOONY135: 自己可以查别人的资讯内容肯定不一样吧? 01/26 21:42
你好,2 跟 3 打架是指 route 的设计,teams/{team_id}/users/XXX/profile 虽然 XXX 有很多手脚可以动,譬如写判断 me 就是自己 me 以外是 uid 但我觉得变本末倒置
8F:→ jinmin88: jwt是方便让你知道执行者是谁,api多个me,有点多此一举 01/26 21:48
对,但 users/profile 又有点奇怪...
9F:推 bill0205: 我是给自己用就用1 毕竟表定是给自己 无需增加me 01/26 22:06
10F:→ bill0205: 但是开放给其他人查就会用3 01/26 22:06
11F:→ bill0205: 两种并不互斥+1 01/26 22:07
这样听起来就是 for me: teams/{team_id}/users/profile for someone: teams/{team_id}/users/{user_id}/profile 这样吗
12F:→ MOONY135: 你的api其实没考虑到是给'什麽权限'的人用,才会觉得好 01/26 22:11
13F:→ MOONY135: 像用法很奇怪 01/26 22:11
可以帮忙导正一下吗 QQ
14F:推 longlyeagle: 3 01/26 22:18
15F:推 bill0205: 偷偷问 如果说表定API是给自己用 那1 的users/profile 01/26 22:19
16F:→ bill0205: 这语法好像有点怪怪的? 01/26 22:20
17F:→ bill0205: (我是想users是复数 但指向自己 是复数吗@@) 01/26 22:20
You got the point
18F:推 SHANGOYANYI: 选3 然後最後面’profile‘可以省略 另外有user_ 01/26 22:41
19F:→ SHANGOYANYI: id情况下前面多teams那一层的设计会变成阶层关系 01/26 22:41
20F:→ SHANGOYANYI: 对未来扩充弹性(例如:user可加入多team、user尚 01/26 22:41
21F:→ SHANGOYANYI: 未加入任何team)的影响可能要考虑一下 01/26 22:41
22F:→ Dommgifer: 把角色权限考虑进去 应该就会有不同的想法了 01/26 22:42
23F:→ online135: 3 你可以去查 Laravel官方网站 里面有写 01/26 23:04
好的,谢谢
24F:推 rounivin: 不懂3和失去比对jwt token 便利性有什麽关系 01/26 23:29
因为假设是查自己了,那 {user_id} 不需要存在,从 jwt token 就可以拿到 id 了 所以网路上的范例多半 api/v1/events 是指 jwt token user 的 personal event 那反过来讲,我 api/v1/events 万一是要给全部的人看不锁登入的话该怎麽办 我现在就是怎麽从网址就可以清楚表示这个 resource 是拿登入者自己还是全部的数据而困扰 ※ 编辑: chan15 (122.116.234.173 台湾), 01/27/2021 00:47:08
25F:推 TheWhack: 1或3,你开的3感觉很充裕了,不要用me 01/27 01:09
26F:→ l7th: /teams/{team_id}/me & teams/{team_id}/users/{id} 01/27 03:07
27F:→ MOONY135: 例如你的忘记密码要用那个,指定user id的忘记密码代表 01/27 04:49
28F:→ MOONY135: 你可以帮别人改资料 你觉得这是谁可以做的事情? 管理员 01/27 04:49
29F:→ MOONY135: 可以啊 所以你用管理员的思维跟自己可以改自己的,这两 01/27 04:49
30F:→ MOONY135: 种路径不就不会冲突,因为是给不同权限的人用的 01/27 04:49
31F:→ MOONY135: Identify/forget-password & users/{his}/forget-passwo 01/27 04:52
32F:→ MOONY135: rd 01/27 04:52
33F:推 MOONY135: his->uid 01/27 04:53
34F:推 superpai: 其实我觉得2是最好的,me就是一个特殊userid啊,没有跟3 01/27 05:36
35F:→ superpai: 打架的感觉 01/27 05:36
36F:→ bill0205: 我意思是 users是user的复数 但是取自己的profile 01/27 09:50
37F:→ bill0205: 应该是单数吧?! 01/27 09:50
38F:推 superpai: 不懂你的意思,/users/userid 一样也是单一user 01/27 12:01
39F:→ petercoin: /users/userid/profile比较符合针对单一使用者的意思吧 01/27 15:23
40F:→ petercoin: /users/profile看起来就是要捞所有使用者的profile? 01/27 15:23
41F:→ bill0205: 我问题是只针对原PO的1的状况 就是P大所说的 01/27 16:09
42F:→ bill0205: 看起来像是捞取所有使用者的profile 01/27 16:10
43F:推 doranako: 如果有开放查别人,3最好,不然还要多写个api,如果没 01/27 21:43
44F:→ doranako: 开放查别人只能拿到自己,那前面路径应该要改一下 01/27 21:43







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP