「WebAPI小议」我应该如何定义个人用户访问资源的WebAPI?

今天围观隔壁前后端对接调试接口,发现一个有趣的url接口定义,/users/getInfoByUserId,看url定义能够理解是根据用户id获取用户信息,然而小猫熊觉得还是有改进的地方。

标准restful的定义采用/users/{userid}的方式,但是一般对于外部用户,应该采取token而不是在url中填入userid,否则不满足安全设计,那么自然会考虑采用动宾结构的形如getxxxbyxxx的方式。

然而,根据restful的风格约定,并不建议在url中出现动词。其实我们知道,绝对的restful风格WebAPI接口是很难满足实际业务需求的,比如同样对于user资源,编辑基本信息和绑定手机号都是可以归纳到对user资源做patch操作,那么这时候一个put接口是否就能满足开发需求呢?是否应该针对各个接口涉及到字段域的修改,分别做if/else或者switch/case的分支处理呢?

往往会在url中增加动词作为折中处理,正如香农的信息论中所阐述的,信息量的增加是为了消除不确定性,如果有限的名词组合不能精确、无二义性的表述接口定义,那么就会想到通过增加动词去修饰接口。

其实,采用/users/me/info,然后配合token,可以以更简明的方式,表达同样的接口意义。

于是可以推导一下常规webapi的四种形式和定义模板。

第一,外部用户,采用资源/me/子资源的方式,请求头嵌入token,例如/users/me/info。

第二,内部用户在用户管理模块中,采用资源/{userid}/info,请求头嵌入token。

第三,开放平台访问资源,可以采用appid,appkey的方式生成token后访问资源。

第四,匿名登录。随意,但要后台处理同源接口限制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值