Python中函数输出作为其他函数参数传递时请求返回None的问题排查与解决
解决传入字符串到API调用时出现的响应异常问题
我看了你的代码,问题其实不在post变量本身——它确实正确存储了careers()的返回值,问题出在apicall函数里的几个细节错误,导致你的GraphQL查询语法无效,进而得到异常响应。
问题1:参数拼写错误
你定义apicall时用了arugment1和arugment2(拼写少了个m),但调用时用的是argument1和argument2。虽然位置传参暂时不会直接报错,但这是个隐患,会导致代码可读性下降,必须修正参数名拼写。
问题2:GraphQL查询的语法错误和字符串转义问题
你的原始查询字符串有三个致命问题:
- 换行符未转义:
post里的\n直接拼到GraphQL查询中会破坏语法结构,GraphQL字符串里的换行需要转义为\\n。 - 查询结构不完整:mutation语句缺少闭合括号,且
errors的位置错误——它应该属于mutation的返回字段,而非参数部分。 - 未处理特殊字符:如果
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
额外验证步骤
- 先确认
post的原始值正确:
print(repr(post)) # 用repr可以看到转义后的字符,确认换行符存在
- 调用
apicall时传入正确的参数:
# 替换成你的实际参数值 apicall("your-guid-value", "your-window-id", post)
这样修改后,post的内容会被正确转义并传入GraphQL查询,API就能收到完整的文本内容了。
内容的提问来源于stack exchange,提问作者curtcab
相关产品推荐
相关产品推荐

