例如一个查询集群的接口,列表里返回了所有集群和集群的信息,在对前端根据不同的条件筛选的时候,会因为传参不同,url也不同,例如
def api_1(self, a=None, b=None, c=None, d=None, e=None, f=None, g=None, h=None, i=None):
data_url = f"&ENV=local" \
f"&PageSize=100" \
f"&PageNumber=1"
if a:
data_url = f"&ENV=local" \
f"&PageSize=100" \
f"&PageNumber=1" \
f"&a={a}"
可以看到当api存在a参数的时候,url就需要加上a,当这个接口有很多入参的情况下,在用这种写法就不合适了
可以使用**kwargs先来全部接受成字典形式,在通过for循环取值并拼接
def api_1(**kwargs):
xxx_url = "https:xxxxxxxxxxxxxxx&"
data_url = {
"ENV": "local",
"PageSize": "100",
"PageNumber": "1"
}
final_data = "&".join(f"{k}={v}" for k, v in {**data_url, **kwargs}.items())
url = xxx_url + final_data
print(url)
api_1(a="1", b="2")
简化部分
# for k, v in {**query, **kwargs}.items():
# print(k, v)