如何通过Postman或浏览器查看Flask路由调用外部API的请求头与Payload
可行的实现方式有以下几种:
方法1:直接在Flask代码中获取requests请求信息,输出到控制台或返回给Postman
requests发送请求后,返回的响应对象res自带request属性,包含了实际发出的所有请求信息,你可以直接读取后输出:
import requests from flask import jsonify @app.route('/sendData', methods = ["POST"]) def handle(): # 业务处理逻辑 data = {"key":"value"} # 替换为你实际的请求载荷 # 注意原代码存在笔误,是requests.post不是request.post res = requests.post('https://externalapi', json=data) # 传form格式就用data参数 # 打印到服务端控制台查看 print("外部API请求头:", dict(res.request.headers)) print("外部API请求载荷:", res.request.body) # 也可以直接把信息放到返回值里,Postman调用接口时直接就能看到 return jsonify({ "external_request_headers": dict(res.request.headers), "external_request_payload": res.request.body, "external_response": res.json() # 也可以附带外部API返回结果 })
这种方法不需要额外工具,修改少量代码即可实现,适合新手快速调试。
方法2:使用抓包工具抓取Flask应用的出站请求
如果不想修改业务代码,可以用本地抓包工具捕获Flask应用所有向外发送的HTTP/HTTPS请求:
- 常用抓包工具可选Fiddler、Charles、mitmproxy
- 启动抓包工具后,给Flask应用配置全局代理,指向抓包工具的监听端口(默认一般为8888)
- 调用
/sendData接口后,就能在抓包工具中看到发往https://externalapi的完整请求头、载荷,以及外部API返回的响应 - 如果请求的是HTTPS接口,记得给抓包工具安装根证书,避免无法解析加密内容
方法3:若外部API为自行维护的服务,直接在外部API侧打印请求日志
如果你有权限修改外部API的代码,直接在对应的接口路由中打印收到的请求头和请求体即可,这种方式拿到的信息是最准确的。
内容的提问来源于stack exchange,提问作者Haoxin Li
相关产品推荐
相关产品推荐

