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内置函数dir详解
Apr 14 Python
python实现同时给多个变量赋值的方法
Apr 30 Python
CentOS下使用yum安装python-pip失败的完美解决方法
Aug 16 Python
python使用xslt提取网页数据的方法
Feb 23 Python
Python判断以什么结尾以什么开头的实例
Oct 27 Python
Python3简单实现串口通信的方法
Jun 12 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
对tensorflow 中tile函数的使用详解
Feb 07 Python
Python 实现向word(docx)中输出
Feb 13 Python
python脚本和网页有何区别
Jul 02 Python
一劳永逸彻底解决pip install慢的办法
May 24 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
PHP高级OOP技术演示
2009/08/27 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
JMenuTab简单使用说明
2008/03/13 Javascript
百度留言本js 大家可以参考下
2009/10/13 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
单行 JS 实现移动端金钱格式的输入规则
2017/05/22 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
React native ListView 增加顶部下拉刷新和底下点击刷新示例
2018/04/27 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
bootstrap-table+treegrid实现树形表格
2019/07/26 Javascript
vux-scroller实现移动端上拉加载功能过程解析
2019/10/08 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
微信小程序关键字变色实现代码实例
2019/12/13 Javascript
jQuery操作选中select下拉框的值代码实例
2020/02/07 jQuery
js正则表达式简单校验方法
2021/01/03 Javascript
Python深入学习之装饰器
2014/08/31 Python
Python使用matplotlib实现交换式图形显示功能示例
2019/09/06 Python
python进行参数传递的方法
2020/05/12 Python
Python自动化xpath实现自动抢票抢货
2020/09/19 Python
python基于opencv实现人脸识别
2021/01/04 Python
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
澳大利亚Rockwear官网:女子瑜伽、健身和运动服
2021/01/26 全球购物
金士达面试非笔试
2012/03/14 面试题
会计专业应届生求职信
2013/11/24 职场文书
本科生自荐信
2014/06/18 职场文书
装修施工安全责任书
2014/07/24 职场文书
党的群众路线教育实践活动学习笔记范文
2014/11/06 职场文书
2014年圣诞节寄语
2014/12/08 职场文书