UNIX bash脚本使用Bearer token调用REST API无返回结果排查
排查解决步骤
- 先确认
token变量在当前执行环境有效:在curl命令前加一行echo $token,确认输出是你预期的有效值,避免变量未赋值、跨子shell作用域导致取值为空的问题。 - 先去掉命令末尾的
| jq -r再执行:如果接口返回内容非JSON格式、或者为空,jq会直接静默丢弃输出,你看不到原始返回结果,去掉管道后就能看到服务端返回的完整原始内容。 - 给curl增加
-v(冗余日志)参数,打印完整请求响应链路:可以直接看到请求头里是否正常带上了Authorization字段、服务端返回的实际状态码、响应头、完整响应体,快速定位是请求参数错误还是服务端处理异常。 - 检查
-d参数后的JSON格式是否正确:如果你用单引号包裹JSON内容,内部的变量不会被bash解析;如果用双引号包裹,JSON内部的双引号需要加反斜杠转义,避免请求体格式错误被服务端直接拦截返回空。 - 如果以上步骤确认请求格式没问题,返回仍然为空,可再检查请求的目标地址是否和Swagger上的地址完全一致,是否有域名解析、内网权限、防火墙拦截的问题。
内容的提问来源于stack exchange,提问作者Felix G
相关产品推荐
相关产品推荐

