Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将许多可选参数传递给封装REST API的函数的最佳实践_Python_Api_Wrapper - Fatal编程技术网

Python 将许多可选参数传递给封装REST API的函数的最佳实践

Python 将许多可选参数传递给封装REST API的函数的最佳实践,python,api,wrapper,Python,Api,Wrapper,我想这有点自以为是,但我很好奇是否有一个共同的“最佳实践”模式 假设我有一个我正在包装的API,它使用许多(30+)可选参数中的一个传递给URI。显然,传递30个关键词是荒谬的,所以我选择做以下几点: from urllib.parse import urlencode def example(required,**kwargs): print('wwww.exampleapi.com/limit='+required+'&{}' .format(urlen

我想这有点自以为是,但我很好奇是否有一个共同的“最佳实践”模式

假设我有一个我正在包装的API,它使用许多(30+)可选参数中的一个传递给URI。显然,传递30个关键词是荒谬的,所以我选择做以下几点:

from urllib.parse import urlencode

def example(required,**kwargs):
    print('wwww.exampleapi.com/limit='+required+'&{}'
          .format(urlencode(kwargs)))

example('foobar',a=1,b=2,c=3)
>>> wwww.exampleapi.com/limit=foobar&a=1&c=3&b=2

这使我可以灵活地拥有可选关键字参数,而不必在参数列表中单独指定它们,而且我不必使用gwargs.get()十亿次。缺点是,如果我想验证传入的参数是否是有效的api参数,我需要维护一个列表或某种映射,并检查**kwargs在该列表中的成员身份,因为我没有使用kwargs.get(或者至少到目前为止我是这么想的)。然后,我可以指向API文档,了解要使用哪些参数


使用这种方法是否有任何明显的问题需要注意?

“如果我想验证传入的参数是否是有效的api参数”-为什么要这样做?如果希望无效参数产生错误,只需将其发送到API即可;它比你更清楚什么是有效的和无效的。我不能100%确定你所说的“只把它们发送到API”是什么意思。例如,使用stubhub的API,如果我传递一个无效的参数,它会在没有激活过滤器的情况下响应,就像没有传递任何参数一样。这可能会导致用户认为他们已经成功地将筛选器作为查询参数应用,因为没有引发异常。