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/m.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燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP