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

Python调用REST API替换JSON payload name字段值失败如何解决

问题根因

你的代码有3个核心错误,导致替换失效、请求失败:

  • f-string语法书写错误:你写的'f{contents}'是普通字符串,不会触发变量替换,正确的f-string需要把f标记放在字符串引号外侧,比如f"{变量名}"。
  • 文件读取逻辑错误:readlines()会读取到带换行符、JSON语法标记(引号、逗号、方括号)的原始文本,直接使用会把无关符号带入name字段,不符合接口参数要求。你的roles.txt本身是标准JSON数组格式,直接用Python内置的json模块解析就能拿到干净的角色名列表。
  • 缺少遍历循环逻辑:你只在请求前构造了一次payload,没有逐一遍历角色名替换name字段,自然无法完成批量创建。
修复后代码
import json
import requests
import time

# 读取并解析角色列表文件
with open('roles.txt', 'r', encoding='utf-8') as file:
    role_name_list = json.load(file)

# 接口固定配置,替换为你自己的有效鉴权信息
API_URL = 'https://api.test.com/api/v1/roles'
# cookies = 你的登录有效cookies
# headers = 你的请求头配置

# 遍历所有角色逐个发起创建请求
for role_name in role_name_list:
    # 每次循环动态构造payload,替换name字段值
    payload = {
        'role': {
            'name': role_name,
            'external_reference': {
                'service_name': 'string',
                'service_model': 'string',
                'service_model_ref': 'string',
                'status': 'string',
                'external_message': 'string',
                'external_link': 'string',
                'external_status': 'string',
                'locked': True,
            },
        },
    }
    # 发送请求
    resp = requests.post(API_URL, cookies=cookies, headers=headers, json=payload)
    # 打印执行结果方便排查问题
    print(f"角色[{role_name}]创建结果:状态码{resp.status_code},响应{resp.text}")
    # 增加1秒请求间隔,避免触发接口限流
    time.sleep(1)
补充说明
  • 不建议手动逐行处理文本做字符串裁剪,用json.load()直接解析标准格式的文件是最稳妥的方案,不会出现符号遗漏、处理不干净的问题。
  • payload建议放在循环内部每次重新构造,避免上一次请求的参数残留导致异常。
  • 运行前确保你填入的cookies、headers是当前有效的鉴权信息,否则会因为权限校验失败导致请求报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 16:33:25