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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
kNN算法python实现和简单数字识别的方法
Nov 18 Python
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
Python实现删除文件但保留指定文件
Jun 21 Python
对python中return和print的一些理解
Aug 18 Python
Python使用遗传算法解决最大流问题
Jan 29 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
PyCharm导入python项目并配置虚拟环境的教程详解
Oct 13 Python
Python实现点云投影到平面显示
Jan 18 Python
python数据预处理 :数据抽样解析
Feb 24 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
python自动化之如何利用allure生成测试报告
May 02 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版微信小店API二次开发及使用示例
2016/11/12 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
PHP7 新增常量
2021/03/09 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
JavaScript 面向对象编程(2) 定义类
2010/05/18 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
JavaScript数组方法总结分析
2016/05/06 Javascript
前端面试知识点锦集(JavaScript篇)
2016/12/28 Javascript
jQuery给表格添加分页效果
2017/03/02 Javascript
php 修改密码实现代码
2017/05/24 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
Vue路由之JWT身份认证的实现方法
2019/08/26 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
Python request设置HTTPS代理代码解析
2018/02/12 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
通过代码实例了解Python异常本质
2020/09/16 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
Final类有什么特点
2012/04/25 面试题
公司行政经理岗位职责
2013/12/24 职场文书
物流合作计划书
2014/01/10 职场文书
大学生冰淇淋店商业计划书
2014/01/14 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
简易版租房协议书范本
2014/10/13 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
学术会议通知范文
2015/04/15 职场文书
通知格式
2015/04/27 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书