You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Requests库:如何在params中传递符合API要求的布尔值?

解决URL参数布尔值小写转换问题

Requests库处理URL查询参数(params)时,默认会用Python原生的str()方法转换布尔值,所以True会变成"True",False变成"False",这和你需要的JSON风格小写字符串不匹配。不用手动逐个转换,有几种更优的方法:

方法1:自定义参数编码器

通过继承requests.models.PreparedRequest重写参数编码逻辑,统一处理布尔值:

import requests
from urllib.parse import quote

class LowercaseBoolEncoder(requests.models.PreparedRequest):
    def encode_params(self, params):
        if not params:
            return ''
        encoded = []
        for key, value in params.items():
            # 仅处理布尔值,转成小写字符串
            if isinstance(value, bool):
                value = str(value).lower()
            encoded.append(f"{quote(str(key))}={quote(str(value))}")
        return '&'.join(encoded)

# 用自定义编码器的Session发送请求
session = requests.Session()
session.prepare_request = LowercaseBoolEncoder

request_parameters = {
    "headers": myheaders,
    "params": {"myparam": True}
}
response = session.get(myurl, **request_parameters)

这个方法一劳永逸,之后所有通过该Session发送的请求,布尔参数都会自动转小写。

方法2:递归转换参数字典

写个简单函数递归处理参数里的所有布尔值,适合参数嵌套较复杂的场景:

def convert_bool_to_lower(param):
    if isinstance(param, dict):
        return {k: convert_bool_to_lower(v) for k, v in param.items()}
    elif isinstance(param, bool):
        return str(param).lower()
    return param

# 预处理参数
processed_params = convert_bool_to_lower({"myparam": True, "nested": {"active": False}})
response = requests.get(myurl, headers=myheaders, params=processed_params)

这种方式直观,只修改布尔值,不影响其他类型参数的处理。

方法3:手动编码URL参数

用urllib.parse.urlencode手动控制编码逻辑,适合参数结构简单的情况:

from urllib.parse import urlencode

params = {"myparam": True}
# 转换布尔值后编码
encoded_params = urlencode({
    k: str(v).lower() if isinstance(v, bool) else v 
    for k, v in params.items()
})
full_url = f"{myurl}?{encoded_params}"
response = requests.get(full_url, headers=myheaders)

另外要明确:Requests的params参数是用于URL查询字符串的,不会自动转成JSON格式——JSON转换是用于请求体(比如requests.post(url, json=params))的逻辑,和URL参数的编码规则完全不同。

内容的提问来源于stack exchange,提问作者user1383029

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 15:46:20