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

Python中函数输出作为其他函数参数传递时请求返回None的问题排查与解决

解决传入字符串到API调用时出现的响应异常问题

我看了你的代码,问题其实不在post变量本身——它确实正确存储了careers()的返回值,问题出在apicall函数里的几个细节错误,导致你的GraphQL查询语法无效,进而得到异常响应。

问题1:参数拼写错误

你定义apicall时用了arugment1和arugment2(拼写少了个m),但调用时用的是argument1和argument2。虽然位置传参暂时不会直接报错,但这是个隐患,会导致代码可读性下降,必须修正参数名拼写。

问题2:GraphQL查询的语法错误和字符串转义问题

你的原始查询字符串有三个致命问题:

  1. 换行符未转义:post里的\n直接拼到GraphQL查询中会破坏语法结构,GraphQL字符串里的换行需要转义为\\n。
  2. 查询结构不完整:mutation语句缺少闭合括号,且errors的位置错误——它应该属于mutation的返回字段,而非参数部分。
  3. 未处理特殊字符:如果post里出现引号,会直接打断查询的字符串边界,导致语法错误。

修正后的apicall函数

这里推荐用f-string构建查询(更易读),同时用json.dumps()处理post内容,自动转义换行符和特殊字符:

import requests
import json

def apicall(argument1, argument2, post):
    apikey = 'Key here'
    headers = {'X-API-Key': apikey}
    uri = 'urihere'
    
    # 用json.dumps自动转义换行、引号等特殊字符,再去掉自动添加的外层双引号
    escaped_post = json.dumps(post).strip('"')
    
    # 修正GraphQL查询的语法结构,用多行字符串提升可读性
    query = f'''
    mutation {{
        windowUpdate(
            guid: "{argument1}", 
            window: {{
                id: "{argument2}",
                configuration: {{
                    combobox: {{
                        text: "{escaped_post}"
                    }}
                }}
            }}
        ) {{
            errors {{
                description
            }}
        }}
    }}
    '''
    response = requests.post(uri, headers=headers, data=query)
    # 新增打印响应状态码和内容,方便排查问题
    print("Response Status:", response.status_code)
    print("Response Content:", response.text)
    return response

额外验证步骤

  1. 先确认post的原始值正确:
print(repr(post))  # 用repr可以看到转义后的字符,确认换行符存在
  1. 调用apicall时传入正确的参数:
# 替换成你的实际参数值
apicall("your-guid-value", "your-window-id", post)

这样修改后,post的内容会被正确转义并传入GraphQL查询,API就能收到完整的文本内容了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 16:42:52