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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
python采用requests库模拟登录和抓取数据的简单示例
Jul 05 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
Python 常用 PEP8 编码规范详解
Jan 22 Python
python创建列表和向列表添加元素的实现方法
Dec 25 Python
使用django-crontab实现定时任务的示例
Feb 26 Python
python用户管理系统
Mar 13 Python
关于tf.TFRecordReader()函数的用法解析
Feb 17 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
Mar 11 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
Python实现手势识别
Oct 21 Python
Pandas实现DataFrame的简单运算、统计与排序
Mar 31 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输出时间格式
2013/08/31 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
php实现用已经过去多长时间的方式显示时间
2015/06/05 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
用 JSON 处理缓存
2007/04/27 Javascript
实现51Map地图接口(示例代码)
2013/11/22 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
基于jquery的文字向上跑动类似跑马灯的效果
2014/09/22 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
js防止页面被iframe调用的方法
2014/10/30 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
逐一介绍Jquery data()、Jquery stop()、jquery delay()函数(详)
2015/11/04 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
JavaScript实现同一个页面打开多张图片
2016/12/29 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
JavaScript实现的开关灯泡点击切换特效示例
2019/07/08 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
Vue Render函数原理及代码实例解析
2020/07/30 Javascript
JavaScript的垃圾回收机制与内存管理
2020/08/06 Javascript
python生成器的使用方法
2013/11/21 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
python有几个版本
2020/06/17 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
协议书模板
2014/04/23 职场文书
人代会标语
2014/06/30 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
升学宴学生答谢词
2015/01/05 职场文书
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js