Python请求:如何同时设置可选参数和非可选参数?

时间:2019-11-18 14:34:32

标签: python python-requests

我想用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?

2 个答案:

答案 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}