溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python調(diào)用REST API接口的幾種方式

發(fā)布時間:2020-06-21 10:14:17 來源:網(wǎng)絡(luò) 閱讀:18255 作者:Mark_L_Zhang 欄目:編程語言

本文主要介紹python中調(diào)用REST API的幾種方式,下面是python中會用到的庫。

- urllib2

- httplib2

- pycurl

- requests?


  1. 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

以上幾種方式都可以調(diào)用API來執(zhí)行動作,但requests這種方式代碼最簡潔,最清晰,建議采用。


轉(zhuǎn)自:?https://blog.51cto.com/haohaozhang/1668761


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI