调一两个接口时,规范好不好看不出差别;等项目里有几十上百个接口调用,规范统一与否直接决定维护成本。这篇拆解微信机器人接口调用的三件套:统一Base URL、统一请求头、统一响应码,并说明它们在工程上为什么值钱。
参考资料WTAPI框架
接口字段见api文档weiti.apifox.cn 。
一、统一Base URL与路径分段
接口统一走参考资料查询路径按/finder/v2/api/资源域/动作分段,比如 group/inviteMember、sns/likeSns。版本号、资源域、动作三层清晰,将来API升级走新版本号、新增能力扩展资源域,都不会破坏已有调用。
二、统一请求头
所有接口固定三个请求头:
X-finder-TOKEN: 平台Token Authorization: Bearer 业务Token Content-Type: application/json请求体统一带appId和instanceId,其余参数按接口填。鉴权头全局一致,意味着可以在一个HTTP拦截器里统一注入,不用每个接口单独处理。
三、统一响应码 code:“1000”
所有接口成功时统一返回code:"1000",这是整套规范里工程价值最大的一条。
第一,一套解析逻辑覆盖全部接口,封装客户端时只需判断一次:
defcall(self,path,instance_id,**params):r=requests.post(url,headers=self.headers(),json={"appId":self.app_id,"instanceId":instance_id,**params},timeout=10).json()ifr.get("code")!="1000":raiseApiError(r.get("code"),r.get("msg"))returnr.get("data",{})第二,错误处理集中化,非"1000"统一进异常分支,业务代码不用处处try-catch。
第三,可观测性友好,监控里统计code != "1000"的比例就是全局接口错误率,一个指标看健康度。
四、三个容易踩的判断坑
不要用if data.get("code")做真值判断,必须显式== "1000",空串或0可能被误判为成功;不要拿HTTP 200当业务成功,业务成败看code;非"1000"响应要记录appId、instanceId、路径、code、msg,排障全靠这些字段。
五、超时也要统一
连接超时和读取超时在客户端层统一设置(建议连接3秒、读取10秒),媒体类接口单独放宽。超时策略不统一,某个慢接口就可能拖垮整条调用链。
规范统一的本质,是把"每个接口都要关心的事"收敛到一处。Base URL、请求头、响应码、超时这四件事做到位,后续加接口就是填业务参数,维护成本自然砍半。