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

如何在验证通过时返回Patch字典?规避HTTP 403错误

Patch操作的验证与合法返回逻辑

需要对记录执行Patch操作时,必须先完成两项验证,否则会触发HTTP 403错误;验证通过后返回原Patch字典。

验证条件

  • 构造键:equip_ + patch_dict['equip_id'] 的值,该键必须存在于verify_dict的键集合中
  • 上述键在verify_dict中对应的取值,必须属于valid_str列表

示例代码

valid_str = ['Not', 'Unique']
patch1_dict = {'id': 123, 'equip_id': 100}
patch2_dict = {'id': 123, 'equip_id': 150}
verify_dict = {'id':123, 'equip_150': 'From Template', 'equip_100': 'Unique'}

其中patch1_dict符合验证要求,patch2_dict无法通过验证。

原推导式的问题

你编写的字典推导式逻辑完全偏离验证需求:

{k:v for (k, v) in patch1_dict.items() if v in verify_dict for sub_v in valid_str}

既没有正确构造verify_dict对应的键,也没有验证值是否属于valid_str,无法得到正确结果。

正确实现方式

函数式实现(推荐)

通过函数封装验证逻辑,清晰直观,便于复用:

def validate_and_get_patch(patch_dict, verify_dict, valid_str):
    equip_key = f"equip_{patch_dict['equip_id']}"
    if equip_key in verify_dict and verify_dict[equip_key] in valid_str:
        return patch_dict
    # 验证不通过时可返回None,或根据业务需求抛出异常
    return None

# 测试验证
print(validate_and_get_patch(patch1_dict, verify_dict, valid_str))  # 输出: {'id': 123, 'equip_id': 100}
print(validate_and_get_patch(patch2_dict, verify_dict, valid_str))  # 输出: None

字典推导式实现(按需使用)

如果必须用推导式,需先完成验证,再生成字典:

# 针对单个patch_dict的验证与推导
equip_key = f"equip_{patch1_dict['equip_id']}"
valid_patch = {k: v for k, v in patch1_dict.items()} if equip_key in verify_dict and verify_dict[equip_key] in valid_str else None

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:33:14