技术解析

给客户端提供的接口,比如修改用户信息这种在 path 中使用用户 id 这种设计可取吗?
0
2021-06-01 17:26:13
idczone

如题比如 /user/1/update/info /user/1/modify/password

如果使用,在程序中是否还要判断 id 和 session 的 id 是否相等,还是不判抗投诉服务器断直接使用 session id 。只是作为一个 url 语义化.


不需要,只需要判断是否有权限即可,比如一个系统中管理员可以改所有人的信息,此时就不能判断 user id 和 session 里的 id 是否一致

RESTful 是不把动词放路径里, 比如修改自己的 profile PUT /user/profile 或者 PATCH 这类的代替 /update/ 这个 path 同样如果是指定修改密码 /user/1/password 就可以了,但其实可以省略 /password 直接 PATCH 或者 PUT /user/1 就好了,鉴权的话该怎么鉴还是怎么鉴,如果只是改自己的信息,我就建议直接省略用户 ID

我的习惯是会要求在 url 上提供这个 id,因为接口也可能由管理员角色调用到。url 中取到的 id 会再和 session id 以及当前用户权限一起判断,这次请求是否合法。
如果不判断的话,调用方用的时候,发现能传其他 id 进来,结果改的信息还是自己的,这不就是两个 bug 嘛!

不是对外接口就没啥问题,如果是对外接口,那潜台词就是可以通过这个接口得知你们公司的用户规模

是的

不是后台,只是手机客户端。

其实接口里面也会返回 用户 id ,以前弄得都是跳断的 uid 。不是完全自增的。

主要是针对手机客户端

针对手机的,其实代码没有用 这个 path 参数 . .. //doge

如果不可能用到,建议去掉,反正你这个也不是 RESTful,自己规范好风格就行。或者 1 可以用其他词替代呀,比如 self,my 什么什么的。不然这个参数就显得很多余了,说不定会被喷不专业,居然要调用方传

哈哈,目前已经去掉了,其实我就想调试的时候知道别人的 uid 是多少。。。省得去问。。

RESTful API 也是一样的 不一定非要网页访问才这么设计

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服