Python使用requests发GET请求时无法在查询参数中传入变量如何解决
解决方案
问题根因
你当前代码中的ord是写死在字符串常量里的,Python不会将其识别为你提前定义的变量,服务端最终收到的过滤规则是OrderNo in ord,而非包含变量值的正确规则。另外你原有代码中requests.get的传参名写错了,正确参数名是params而非param。
正确实现方式
方法1:f-string拼接(推荐,Python3.6+支持)
这是最简洁的写法,注意如果OrderNo是字符串类型,需要给变量值包裹单引号,符合OData的$filter语法要求:
import requests ord = '12345' query = { '$filter': f"OrderNo in '{ord}'" } response = requests.get('https://example.com/orderDetails', params=query) print(response.json())
方法2:format方法(兼容低版本Python)
如果使用的Python版本低于3.6,可以用str.format()实现拼接:
ord = '12345' query = { '$filter': "OrderNo in '{}'".format(ord) }
特殊场景:变量值包含单引号
如果ord的值可能存在单引号,需要先做转义避免语法错误:
ord = "123'45" # 转义单引号符合OData语法规则 escaped_ord = ord.replace("'", "''") query = { '$filter': f"OrderNo in '{escaped_ord}'" }
内容的提问来源于stack exchange,提问作者user12972631
相关产品推荐
相关产品推荐

