改进 Google API 调用

Improve a Google API Call

我编写了一个调用 Google 地方 API 的函数,但我想让它变得更好。具体来说,我怀疑有更好的方法来处理函数调用中的可选参数,例如 locationradius。如何在不编写可选参数的所有可能排列的情况下动态构建 url?

def get_data(query,api_key,radius=None,location=None):
    if location==None and radius==None:
    url="https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&fields=name,formatted_address,opening_hours,price_level,rating&key=%s" % (query,api_key)
    elif location is not None:
    url="https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&location=%s&fields=name,formatted_address,opening_hours,price_level,rating&key=%s" % (query,location, api_key)
    elif location is not None and radius is not None:
     url="https://maps.googleapis.com/maps/api/place/textsearch/json?query=%s&location=%s&radius=%s&fields=name,formatted_address,opening_hours,price_level,rating&key=%s" % (query,location,radius, api_key)

----Snip-----

我认为这段代码可以解决您的问题:

base_url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?'
params = {
    'key': 'api_key', 
    'fields':'name,formatted_address,opening_hours,price_level,rating',
    'query' : query
}

if location is not None:
    params['location'] = location 
if radius is not None:
    params['radius'] = radius
    url = base_url + urllib.urlencode(params)