我正在使用python的请求库。我想调用请求方法GET,POST或任何方法,具体取决于函数调用中收到的参数。我将在该函数内调用请求方法。我该如何实现?
import requests
def get_endpoint(method,shop, list_obj):
join_sentence = '/'.join(list_obj)
endpoint_api = "https://{0}/admin/2019-04/{1}.json".format(shop, join_sentence)
a = requests.method(endpoint_api) # this method should be replaced by method argument of a function get_endpoint
get_endpoint('get', "https://abc/", ['john','joe','1368797932'])
我希望它将用get,post替换方法,无论传递给函数的那个URL是哪个。 对于前。 requests.get(endpoint_api)#get被方法替换,它将调用url。
答案 0 :(得分:0)
您可以使用字典,例如:
def get_endpoint(method,shop, list_obj):
method_f = {
"get": requests.get,
"post": requests.post,
...
}
def invalid_method(*_):
raise ValueError("Method not supported")
join_sentence = '/'.join(list_obj)
endpoint_api = "https://{0}/admin/2019-04/{1}.json".format(shop, join_sentence)
a = method_f.get(method, invalid_method)(endpoint_api) # this method should be replaced by method argument of a function get_endpoint
请注意,如果您不支持该方法,则我添加了一个默认函数来引发错误。该错误仅出于示例目的,您可以提出任何需要的内容。
答案 1 :(得分:0)
您可以使用python eval
方法来调用带字符串的方法。虽然我不确定这是否是推荐的方法。
import requests
def get_endpoint(method,shop, list_obj):
join_sentence = '/'.join(list_obj)
endpoint_api = "https://{0}/admin/2019-04/{1}.json".format(shop, join_sentence)
return eval('requests.' + method)(endpoint_api)
get_endpoint('get', "https://abc/", ['john','joe','1368797932'])