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

如何更优地在API调用URL中添加可选过滤条件

优化API URL可选参数拼接的简便方法

当需要处理多个可选过滤条件的API URL拼接时,不用逐个枚举参数组合,有两种更简洁的实现方式:

方法一:利用字典过滤+URL编码工具

借助Python标准库urllib.parse.urlencode自动处理参数拼接,只需把所有参数存入字典,过滤掉空值即可:

from urllib.parse import urlencode

def get_cards(board_id, lane_id=None, workflow_id=None):
    """ Get all the cards by the given conditions """
    base_url = 'https://xxxx.kanbanize.com/api/v2/cards'
    params = {
        'board_ids': board_id,
        'lane_ids': lane_id,
        'workflow_ids': workflow_id
    }
    # 过滤值为None的可选参数
    valid_params = {key: value for key, value in params.items() if value is not None}
    # 拼接基础URL与查询参数
    return f"{base_url}?{urlencode(valid_params)}"

这种方式扩展性极强——后续新增可选参数时,只需在params字典中添加对应的键值对,无需修改其他逻辑。

方法二:手动拼接参数列表

如果不想引入标准库,也可以通过列表收集有效参数再拼接:

def get_cards(board_id, lane_id=None, workflow_id=None):
    """ Get all the cards by the given conditions """
    # 先拼接必填参数
    url_parts = [f'https://xxxx.kanbanize.com/api/v2/cards?board_ids={board_id}']
    # 收集非空的可选参数
    if lane_id is not None:
        url_parts.append(f'lane_ids={lane_id}')
    if workflow_id is not None:
        url_parts.append(f'workflow_ids={workflow_id}')
    # 用&连接所有参数部分
    return '&'.join(url_parts)

这种方式逻辑直观,适合参数数量不多的场景,新增参数时只需添加一个if判断即可。

两种方法都能避免大量冗余的条件分支,大幅降低代码维护成本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:12:18