我会尽量澄清我的意思.

假设我有一个url:

https://test-api.com/users?age=17&sex=M

有两个字段:年龄和性别.年龄字段是必需的,但性别字段是可选的.

假设我想进行一系列测试,并使用以下代码:

import requests

def testUserQuery(user_age, user_sex):
    url = f'https://test-api.com/users?age={user_age}&sex={user_sex}'
    response = requests.get(url)

test_query = testUserQuery(17)

现在,假设我无法进入API本身的实际代码并更改空字段的解释方式...

如何进行此测试并将user\u sex字段留空?

换句话说,是否有一个特殊的通用符号(如"&amp这意味着"和"对于世界上的每一个URL),我可以为user\u sex设置,这将迫使API忽略字段而不会导致错误?

否则,我必须这样做:

import requests

def testUserQuery(user_age, user_sex=None):
    if user_sex is None:
       url = f'https://test-api.com/users?age={user_age}'
    elif user_sex is not None:
       url = f'https://test-api.com/users?age={user_age}&sex={user_sex}'
    response = requests.get(url)

test_query = testUserQuery(17)

想象一下,如果我处理10个可选字段.我认为对于可选字段为空的每一种可能的情况,使用多个elif语句来更改URL不是很有效.

我希望我说的很清楚,如果这听起来让人困惑,很抱歉.

推荐答案

这里有一种利用params参数实现这一点的简单方法:

import requests

URL = 'https://test-api.com/users'

def testUserQuery(**params):
    return requests.get(URL, params=params)

testUserQuery(age=21, sex='male')
testUserQuery(age=21)

换句话说,您所要做的就是将参数名与API能够理解的参数名相匹配.无需操作URL

Python相关问答推荐

两极按组颠倒顺序

正在设置字段.需要为假,因为错误列表索引必须是整数或切片,而不是字符串

重命名变量并使用载体中的字符串存储 Select 该变量

隐藏QComboBox的指示器(qdarkstyle)

当变量也可以是无或真时,判断是否为假

在Python中根据id填写年份系列

Python中的Pool.starmap异常处理

Python:记录而不是在文件中写入询问在多文件项目中记录的最佳实践

如何使用bs 4从元素中提取文本

symy.分段使用numpy数组

从DataFrame.apply创建DataFrame

返回nxon矩阵的diag元素,而不使用for循环

使用SciPy进行曲线匹配未能给出正确的匹配

Pandas 滚动最接近的价值

如何使用它?

当独立的网络调用不应该互相阻塞时,'

Pandas DataFrame中行之间的差异

移动条情节旁边的半小提琴情节在海运

什么是最好的方法来切割一个相框到一个面具的第一个实例?

旋转多边形而不改变内部空间关系