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中的模块导入和读取键盘输入的方法
Oct 16 Python
Python+微信接口实现运维报警
Aug 27 Python
Python使用Matplotlib实现雨点图动画效果的方法
Dec 23 Python
python实现微信跳一跳辅助工具步骤详解
Jan 04 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
PyQt5每天必学之带有标签的复选框
Apr 19 Python
Django上使用数据可视化利器Bokeh解析
Jul 31 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
Python读取分割压缩TXT文本文件实例
Feb 14 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
Python sklearn分类决策树方法详解
Sep 23 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常用函数和常见疑难问题解答
2014/03/05 PHP
php使用array_search函数实现数组查找的方法
2015/06/12 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
2017/02/17 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
json 定义
2008/06/10 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
在次封装easyui-Dialog插件实现代码
2010/11/14 Javascript
JS实现将人民币金额转换为大写的示例代码
2014/02/13 Javascript
Javascript获取当前时间函数和时间操作小结
2014/10/01 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
微信小程序 图片绝对定位(背景图片)
2017/04/05 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
2020/08/30 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
Python 初始化多维数组代码
2008/09/06 Python
简述Python中的面向对象编程的概念
2015/04/27 Python
Python如何实现MySQL实例初始化详解
2017/11/06 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
Python爬虫学习之获取指定网页源码
2019/07/30 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
德国帽子专家:Hutshopping
2019/11/03 全球购物
安卓程序员求职信
2014/02/28 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
公司门卫岗位职责
2014/03/15 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
信用卡收入证明范本
2015/06/12 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
React中的Context应用场景分析
2021/06/11 Javascript
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL