Python -- 为 API 调用将查询参数附加到 url 的最佳做法是什么
Python -- What is the best practice to append query params to url for API calls
我知道乍一看这听起来很奇怪。让我解释一下。
我有一个保持一致的域,比如 https://some.api.endpoint/some/path
我有一个我需要用它调用的不同查询的列表。一种方法是简单地连接字符串,但我必须处理编码,这是我尽量避免的事情。
所以我决定继续使用 urlparse -> urlunparse。我不确定这是否是一个好的做法,但这可行。
url = 'https://some.api.endpoint/some/path'
parsed = urlparse(url)
parsed=parsed._replace(query='search=some_name')
new_url = urlunparse(parsed)
response = requests.get(new_url)
我的问题:
- 这是一个好习惯吗?
- 没有
urlunparse
部分是否可以这样做?
- 更好的方法是什么?
从 requests
文档中,您可以将字典传递给 requests.get
的 params
关键字参数。 http://docs.python-requests.org/en/master/user/quickstart/
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://httpbin.org/get', params=payload)
这将为您处理 url 编码和一切。
以上片段的结果:
print(r.url)
# http://httpbin.org/get?key2=value2&key1=value1
我知道乍一看这听起来很奇怪。让我解释一下。
我有一个保持一致的域,比如 https://some.api.endpoint/some/path
我有一个我需要用它调用的不同查询的列表。一种方法是简单地连接字符串,但我必须处理编码,这是我尽量避免的事情。
所以我决定继续使用 urlparse -> urlunparse。我不确定这是否是一个好的做法,但这可行。
url = 'https://some.api.endpoint/some/path'
parsed = urlparse(url)
parsed=parsed._replace(query='search=some_name')
new_url = urlunparse(parsed)
response = requests.get(new_url)
我的问题:
- 这是一个好习惯吗?
- 没有
urlunparse
部分是否可以这样做? - 更好的方法是什么?
从 requests
文档中,您可以将字典传递给 requests.get
的 params
关键字参数。 http://docs.python-requests.org/en/master/user/quickstart/
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('http://httpbin.org/get', params=payload)
这将为您处理 url 编码和一切。
以上片段的结果:
print(r.url)
# http://httpbin.org/get?key2=value2&key1=value1