Python 根据方法向API发送请求
我有一个APIClient类的方法。我需要优化if-else语句,以便在不使用条件层次结构的情况下处理所有HTTP方法。我怎么能做到?我试着用字典,但这似乎不是正确的方法Python 根据方法向API发送请求,python,python-requests,Python,Python Requests,我有一个APIClient类的方法。我需要优化if-else语句,以便在不使用条件层次结构的情况下处理所有HTTP方法。我怎么能做到?我试着用字典,但这似乎不是正确的方法 def make_request(self, method: str, request_url: str, data: dict=None, headers=None): url = self._build_url(request_url) try:
def make_request(self, method: str, request_url: str, data: dict=None, headers=None):
url = self._build_url(request_url)
try:
if method == 'POST':
resp = requests.post(url, data=data, headers=headers, verify=False)
elif method == 'GET':
resp = requests.get(url, headers=headers, verify=False)
return resp
except requests.exceptions.RequestException:
raise APINotRespondingeError()
我使用了getattr()方法。注意,该方法参数应该是小写的
def make_request(self, method: str, request_url: str, data: dict=None):
url = self._build_url(request_url)
try:
get_response = getattr(requests, method, None)
response = get_response(url, data=data, headers=self.headers)
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as err:
status_code = None if err.response is None else err.response.status_code
raise APIResponseError(error=err)