get請求地址一般是 協議+域名+端口+路徑+參數,除了協議和域名其他均可為空。
http(s)://domain:port/path?key1=value1&key2=value2&...
拼接函數:協議默認http,domain必輸項,port默認空,path默認空,params默認空,這幾項默認參數。
''' get請求的地址拼接函數= 協議+域名+端口+路徑+參數 dinghanhua 2018-11-17 ''' def get_url_format(domain,protocal='http',port=None,path=None,params=None): #缺省參數放到最后 url = protocal+'://'+domain if port: url += ':'+str(port) #port不為空,加上:port if path: url += '/'+path #path不為空,加上/path if params: if not isinstance(params,dict): raise Exception('params必須是字典') #不是字典格式拋出異常
url += '?'+'&'.join([ str(key)+'='+str(value) for key,value in params.items() ]) #params不為空,加上?key1=value1&key2=value2 return url
測試一下,拼接的是否正確
print( get_url_format('192.168.6.1'), get_url_format('192.168.6.1',protocal='https'), get_url_format('192.168.6.1',port=8080), get_url_format('192.168.6.1',path='search.html'), get_url_format('192.168.6.1',protocal='https',path='search/p',params={'name':'tester'}), get_url_format(domain='192.168.6.1',protocal='https',port=8080,path='search/p',params={'name':'tester','flag':1}), sep = '\n' )
the end!