Python调用REST API接口的几种方式汇总


Posted in Python onOctober 19, 2020

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

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

  • - urllib2
  • - httplib2
  • - pycurl
  • - requests

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({
        '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

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调用REST API接口的几种方式汇总的详细内容,更多关于Python调用REST API接口的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python 两个列表的差集、并集和交集实现代码
Sep 21 Python
python和ruby,我选谁?
Sep 13 Python
Python中django学习心得
Dec 06 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
Python GUI编程 文本弹窗的实例
Jun 11 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
利用Python实现手机短信监控通知的方法
Jul 22 Python
Python 共享变量加锁、释放详解
Aug 28 Python
Python实现搜索算法的实例代码
Jan 02 Python
Python基于类路径字符串获取静态属性
Mar 12 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 Python
Python使用DFA算法过滤内容敏感词
Apr 22 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 #Python
python MD5加密的示例
Oct 19 #Python
python Yaml、Json、Dict之间的转化
Oct 19 #Python
Python pip 常用命令汇总
Oct 19 #Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 #Python
python Tornado框架的使用示例
Oct 19 #Python
python mock测试的示例
Oct 19 #Python
You might like
PHP OPCode缓存 APC详细介绍
2010/10/12 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
深入浅析php json 格式控制
2015/12/24 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
JQuery toggle使用分析
2009/11/16 Javascript
jQuery编写widget的一些技巧分享
2010/10/28 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
2013/11/19 Javascript
在for循环中length值是否需要缓存
2015/07/27 Javascript
jQuery实现图片加载完成后改变图片大小的方法
2016/03/29 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Vue.js实现可排序的表格组件功能示例
2019/02/19 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
autojs 蚂蚁森林能量自动拾取即给指定好友浇水的实现方法
2020/05/03 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python正则抓取新闻标题和链接的方法示例
2017/04/24 Python
Python获取系统所有进程PID及进程名称的方法示例
2018/05/24 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
Python爬虫与反爬虫大战
2020/07/30 Python
django和flask哪个值得研究学习
2020/07/31 Python
完美实现CSS垂直居中的11种方法
2021/03/27 HTML / CSS
《要下雨了》教学反思
2014/02/17 职场文书
挂职个人工作总结
2015/03/05 职场文书
降价通知函
2015/04/23 职场文书
2015年社区教育工作总结
2015/05/13 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
小学安全教育主题班会
2015/08/12 职场文书
浅谈resultMap的用法及关联结果集映射
2021/06/30 Java/Android
OpenCV项目实践之停车场车位实时检测
2022/04/11 Python
Python编写冷笑话生成器
2022/04/20 Python