您好,登錄后才能下訂單哦!
本文主要介紹python中調用REST API的幾種方式,下面是python中會用到的庫。
- urllib2
- httplib2
- pycurl
- requests?
urllib2
- Sample1
1 2 3 4 5 6 7 8 9 10 | import ?urllib2,?urllib github_url?=? 'https://api.github.com/user/repos' password_manager?=?urllib2.HTTPPasswordMgrWithDefaultRealm() password_manager.add_password(None,?github_url,? 'user' ,? '***' ) auth?=?urllib2.HTTPBasicAuthHandler(password_manager)? #?create?an?authentication?handler opener?=?urllib2.build_opener(auth)? #?create?an?opener?with?the?authentication?handler urllib2.install_opener(opener)? #?install?the?opener...? request?=?urllib2.Request(github_url,?urllib.urlencode({ 'name' : 'Test?repo' ,? 'description' :? 'Some?test?repository' }))? #?Manual?encoding?required handler?=?urllib2.urlopen(request) print?handler. read () |
??- Sample2
1 2 3 4 5 6 7 8 9 10 11 | import ?urllib2 url?=? 'http://ems.vip.ebay.com/removeSIforcloud.cgi?ip=' ?+?ip req?=?urllib2.Request(url) req.add_header( 'IAF' ,abc.token_authiaas) try: ???? resp?=?urllib2.urlopen(req) except?urllib2.HTTPError,?error: ???? print? "Cannot?remove?service?instance!" ,?error ???? sys. exit (1) response?=?resp. read () print?response |
? - Sample3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | import ?urllib2,?urllib,?base64 url?=? "https://reparo.stratus.ebay.com/reparo/bootstrap/registerasset/" ?+?rackid?+? "/" ?+?asset data?=?urllib.urlencode({ ???????????????? 'reservedResource' : 'RR-Hadoop' , ???????????????? 'resourceCapability' : 'Production' , ???????????????? 'movetoironic' : 'False' , ???????????????? 'output' : 'json' ???????? }) print? "Bootstrap?Asset?jobs?starting?.............." base64string?=?base64.encodestring( '%s:%s' ?%?(user,? passwd )).replace( '\n' ,? '' ) request?=?urllib2.Request(url,?data,?headers={ "Authorization" ?:? "Basic?%s" ?%?base64string}) response?=?urllib2.urlopen(request). read () response_json?=?json.loads(response) response_status?=?response_json[ 'status' ] status_code?=?response_status[ 'statusCode' ] status?=?response_status[ 'status' ] message?=?response_status[ 'message' ]??????????? print?status_code?,?status,?message |
2.?httplib2
1 2 3 4 5 6 7 | import ?urllib,?httplib2 github_url?=?' h?=?httplib2.Http( ".cache" ) h.add_credentials( "user" ,? "******" ,?" data?=?urllib.urlencode({ "name" : "test" }) resp,?content?=?h.request(github_url,? "POST" ,?data) print?content |
3.?pycurl
1 2 3 4 5 6 7 8 9 10 | import ?pycurl,?json github_url?=?" user_pwd?=? "user:*****" data?=?json.dumps({ "name" :? "test_repo" ,? "description" :? "Some?test?repo" }) c?=?pycurl.Curl() c.setopt(pycurl.URL,?github_url) c.setopt(pycurl.USERPWD,?user_pwd) c.setopt(pycurl.POST,?1) c.setopt(pycurl.POSTFIELDS,?data) c.perform() |
4.?requests
1 2 3 4 5 | import ?requests,?json github_url?=?" data?=?json.dumps({ 'name' : 'test' ,? 'description' : 'some?test?repo' })? r?=?requests.post(github_url,?data,?auth=( 'user' ,? '*****' )) print?r.json |
以上幾種方式都可以調用API來執行動作,但requests這種方式代碼最簡潔,最清晰,建議采用。
轉自:?https://blog.51cto.com/haohaozhang/1668761
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。