大家常用的API调试工具是什么呢?最常被提及的应该是著名的postman吧!
背景
我个人对装软件有洁癖,嘿嘿。笔者使用的是vscode的rest client插件。感觉使用也挺方便的,愉快的使用了好几年,也可能是我的使用场景不是很特殊吧。
对于需要首先获取token再调用api的情况支持得很好,可以将认证接口响应的token提取为变量,并在后面的api调用中注入请求参数,还是挺方便的。
但是,这次却碰到了问题!
问题
问题就出在认证接口返回token的 content-type类型上,本来你返回的是json格式,包含access_token、refresh_token等等,返回的content-type类型却是text/plain,于是插件就认为是文本内容不能解析,报错了:“Only JSON and XML response/request body is supported to query the result。”
所以呢,就不能用JSONPath的语法解析json内容了。为了继续调试接口,只能手动操作了,将token值复制的api调试接口的参数中去调用,麻烦至极!
抱怨
就不能老老实实返回个application/json?
作为程序员,为什么不能按照协议约定返回匹配的content-type类型呢?你不按照协议处理徒增许多麻烦。
作为程序员,这点基本的操作都弄错,你专业吗?
text/json
即使你不返回application/json,返回了text/json也行啊。
插件官方issue解决过这个问题了,也不至于解析不出来token了。
即使官方没有解决过,也可以提个issue,现在倒好,根本没解。
脚本支持
其实还有一条路,就是使用脚本自己解析。
但是,现在插件根本不支持脚本。支持脚本的功能看起来遥遥无期,为什么这么说呢?
因为看了有issue在讨论这个问题,作者huachao在其中回复过,说考虑添加这个功能。时间点是在2018年,距离现在也有好几年了。
对于我来说,这种场景并不多,没有也行。本部分只是借题发挥一下,了解一下相关进展。
总结
做开发本就讲究规范严谨,接口返回的内容格式与响应头本应一一对应,这不仅是行业通用的协议准则,更是为了上下游开发协作的顺畅高效。
将JSON格式数据的content-type错误设为text/plain,看似是小疏忽,却会让下游调试者耗费额外精力手动处理,打乱自动化的调试流程,拖慢整体开发节奏。
希望后端同仁在开发接口时,拿出工匠精神,多一份细致与考量,严格遵循数据格式与响应头的匹配规范,从细节处把控接口质量,体现自己的专业性。
这既是对开发规范的尊重,也是对协作伙伴的体谅,小小的规范落地,能让团队的开发协作更丝滑,减少不必要的沟通与返工成本,让大家都能把精力聚焦在核心的开发工作上。
参考
Cannot parse text/json · Issue #1019 · Huachao/vscode-restclient
[Feature Request] Support Response Scripting · Issue #238 · Huachao/vscode-restclient