Python 中更新请求响应内容

Rod*_*nde 3 python json python-requests

我是Python新手。我正在尝试使用请求库对在交换响应中获得的 Json 正文进行更改。

我想做类似的事情:

import json
import requests

def request_and_fill_form_in_response() -> requests.Response():
    response = requests.get('https://someurl.com')
    body_json = response.json()
    body_json['some_field'] = 'some_value'
    response.content = json.dumps(body_json)
    return response
Run Code Online (Sandbox Code Playgroud)

在这个特定的场景中,我只对更新 response.content 对象感兴趣(无论这是否是一个好的做法)。

这可能吗?

(顺便说一句,上面的代码抛出'AttributeError: can't set attribute'错误,这几乎是不言自明的,但我想确保我没有遗漏一些东西)

Ary*_*ahi 6

您可以这样重写内容:

from json import dumps
from requests import get, Response


def request_and_fill_form_in_response() -> Response:
    response = get('https://mocki.io/v1/a9fbda70-f7f3-40bd-971d-c0b066ddae28')
    body_json = response.json()
    body_json['some_field'] = 'some_value'
    response._content = dumps(body_json).encode()
    return response


response = request_and_fill_form_in_response()

print(response.json())
Run Code Online (Sandbox Code Playgroud)

结果是: {'name': 'Aryan', 'some_field': 'some_value'}

但从技术上讲 _content 是一个私有变量,必须有一个方法作为 setter 来为其赋值。此外,您也可以创建自己的 Response 对象。(您可以在此处查看回复方法)