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开发实现简单的记事本
Nov 15 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
使用python和pygame绘制繁花曲线的方法
Feb 24 Python
解决python 输出是省略号的问题
Apr 19 Python
Python使用爬虫爬取静态网页图片的方法详解
Jun 05 Python
python pandas修改列属性的方法详解
Jun 09 Python
Python datetime包函数简单介绍
Aug 28 Python
通过python3实现投票功能代码实例
Sep 26 Python
pyqt5中动画的使用详解
Apr 01 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
Python实现Canny及Hough算法代码实例解析
Aug 06 Python
Python3+selenium配置常见报错解决方案
Aug 28 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-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
PHP eval函数使用介绍
2013/12/08 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
PHP版本常用的排序算法汇总
2015/12/20 PHP
php根据数据id自动生成编号的实现方法
2016/10/16 PHP
详解PHP字符串替换str_replace()函数四种用法
2017/10/13 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
javascript一些不错的函数脚本代码
2008/09/10 Javascript
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
浅析js的模块化编写 require.js
2016/12/07 Javascript
基于jQuery实现火焰灯效果导航菜单
2017/01/04 Javascript
JS实现商品筛选功能
2020/08/19 Javascript
layui.use模块外部使用其内部定义的js封装函数方法
2019/09/16 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
利用Python实现图书超期提醒
2016/08/02 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
Python selenium根据class定位页面元素的方法
2019/02/26 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
Vision Direct比利时:在线订购隐形眼镜
2019/08/27 全球购物
个人思想理论学习的自我鉴定
2013/11/30 职场文书
中英文自我评价语句
2013/12/20 职场文书
房地产项目策划书
2014/02/05 职场文书
安全事故隐患排查治理制度
2015/08/05 职场文书
工伤调解协议书
2016/03/21 职场文书