设为首页 加入收藏

TOP

Python调用API接口的几种方式
2015-11-10 13:46:05 来源: 作者: 【 】 浏览:8
Tags:Python 调用 API 接口 方式

相信做过自动化运维的同学都用过API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。


本文主要介绍Python中调用API的几种方式,下面是Python中会用到的库。


- urllib2


- httplib2


- pycurl


- requests


1.urllib2


- Sample1


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


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


import urllib2, urllib, base64


url = "https://reparo.stratus.ebay.com/reparo/bootstrap/registerasset/" + rackid + "/" + asset


data = urllib.urlencode({


? ? ? ? ? ? ? ? '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


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


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


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这种方式代码最简洁,最清晰,建议采用。


下面关于Python的文章您也可能喜欢,不妨看看:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇WebSocket使用示例 下一篇Python日志库的用法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: