값이있는 매개 변수와 값이없는 매개 변수를 포함하는 Python 요청

Nov 13 2020

나는 API에 대한 파이썬 래퍼를 작성하고 그 지원 값 (예를 들어,이 쿼리 매개 변수 param1아래)와 쿼리 매개 변수 없는 값 값이 (예 : param2아래) 즉,

https://example.com/service?param1=value1&param2

HTTP 라이브러리 요청 값과 유명 지원하는 매개 변수 값없이 매개 변수를 . 그러나 두 가지 유형의 매개 변수를 모두 지정할 수 있어야합니다.

답변

1 Steve Nov 14 2020 at 01:06

쿼리 문자열과 관련하여 요청에는 두 가지 옵션이 있습니다. 1) 사전을 통해 키 / 값 쌍을 제공하거나 2) 문자열을 제공합니다. # 1을 제공하면 원하는 것이 아닌 각 키 / 값 쌍에 대해 항상 '='가 표시됩니다. 따라서 # 2를 사용해야합니다. 그러면 전체 쿼리 문자열로 제공 한 내용 만 포함되기 때문에 원하는 모든 작업을 수행 할 수 있습니다. 단점은 쿼리 문자열을 직접 구성해야한다는 것입니다. 물론 그렇게하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 다음과 같습니다.

params = {'param1': 'value1', 'param2': None}
params = '&'.join([k if v is None else f"{k}={v}" for k, v in params.items()])
r = requests.get('https://example.com/service', params=params)
print(r.url)

이렇게하면 요청이 쿼리 문자열을 빌드하도록하는 것처럼 사전을 제공 할 수 있지만 Null'='없이 키 이름 만 원한다는 것을 나타내는 값을 지정할 수 있습니다 . 값이 None사전에있는 경우 요청에는 일반적으로 매개 변수가 전혀 포함되지 않습니다 .

이 코드의 결과는 사용자가 원하는 내용의 예로서 제공 한 것입니다.

https://example.com/service?param1=value1&param2