我想用API查询数据库。
我有:
import requests
query_params = {'author':'grisham','year':'1998'}
response = requests.get(url='http://111.111.1.1:1000',params=query_params)
这很好,我可以返回1998年出版的所有带有grisham的书籍的数据框。
但是,我想将其修改为“作者是必填参数,但可以选择将年份作为第二个参数”(以区分那些只想要他所有书籍的人和那些想要知道什么的人。他在某一年出版)。
我似乎无法在请求库中找到参数而不是参数,我可以将其更改为两个字典(可选参数和强制参数),并将它们分别传递吗?还是有更好的方法来做到这一点?
我猜this正是我想要的东西,想知道我的用例是否还有更多的pythonic / efficiency / cleaner?
答案 0 :(得分:1)
是否需要给定参数,以及(如果不是必需的话)是否选择将其包含在对API的调用中对requests
库没有影响。它的工作从发送和发送您的数据并报告结果开始和结束。 API规范中应包括是否要求年份。如果它是可选的,则可以选择不将其包含在发送的字典中而忽略它。
换句话说,year
字段是API的参数。它不是requests
库的参数,并且requests
仅在需要在请求正文中发送的一条数据的范围内知道或关心它。对于requests
,年份字段总是 可选的,因为requests
只是传递消息。
答案 1 :(得分:1)
就像其他人所说的那样,您需要验证所提供的参数,以确定是否正确传入了任何必需的参数。requests
库仅将其发送出去。
是的,您可以将两个字典传递到requests.get()
中(需要Python 3.5 +):
query_params = {**required_params, **optional_params}