【发布时间】:2019-10-19 22:03:16
【问题描述】:
我想将requestsResponse对象序列化为json,最好是HAR格式。
import requests
resp = requests.get('http://httpbin.org/get')
har = to_har(resp) # <--- magic
但是用我的 google-fu 能力在网上找不到任何东西。
似乎所有数据都存在于Response 对象上,我希望我不需要实现整个 HAR 规范并且存在一些我可以重用的代码/实用程序。
一个有效的答案可能会给出:
如果python 和/或requests 到目前为止不存在任何内容,请参考现有库或参考起点。
目前我更简单的 3 分钟解决方案(不是 HAR 格式)序列化为 Response 对象看起来像这样(如果什么都不存在,可能是一个很好的起点):
def resp2dict(resp, _root=True):
d = {
'text': resp.text,
'headers': dict(resp.headers),
'status_code': resp.status_code,
'request': {
'url': resp.request.url,
'method': resp.request.method,
'headers': dict(resp.request.headers),
},
}
if _root:
d['history'] = [resp2dict(h, False) for h in resp.history]
return d
我发布此内容是因为我认为无论 HAR 格式如何,我都很难将 Response 对象序列化为 json。
【问题讨论】:
-
我认为大多数人都对
resp.json()感到满意,我不知道它可能符合也可能不符合HAR。您还可以向resp.json()返回的dict添加字段。 -
resp.json() 仅适用于 json 响应,并且仅序列化响应的主体。您不会序列化标头、url、请求或重定向历史记录。它与我想要解决的问题不同。它实际上是反序列化味精而不是序列化
标签: python python-3.x serialization python-requests har