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中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python查询文件夹下excel的sheet名代码实例
Apr 02 Python
django 中的聚合函数,分组函数,F 查询,Q查询
Jul 25 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
Jan 20 Python
tensorflow 分类损失函数使用小记
Feb 18 Python
python读写文件write和flush的实现方式
Feb 21 Python
Python 判断时间是否在时间区间内的实例
May 16 Python
Python中无限循环需要什么条件
May 27 Python
Python并发编程实例教程之线程的玩法
Jun 20 Python
python开发的自动化运维工具ansible详解
Aug 07 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/06/13 PHP
laravel 解决Validator使用中出现的问题
2019/10/25 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
jQuery Validate表单验证入门学习
2015/12/18 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
js 获取站点应用名的简单实例
2016/08/18 Javascript
基于Layer+jQuery的自定义弹框
2020/05/26 Javascript
Vue中的混入的使用(vue mixins)
2018/06/01 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
基于 jQuery 实现键盘事件监听控件
2019/04/04 jQuery
JavaScript中的this原理及6种常见使用场景详解
2020/02/14 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
原生JavaScript实现刮刮乐
2020/09/29 Javascript
浅析python 内置字符串处理函数的使用方法
2014/06/11 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
python学习 流程控制语句详解
2016/06/01 Python
Python探索之创建二叉树
2017/10/25 Python
如何实现Django Rest framework版本控制
2019/07/25 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
python提取照片坐标信息的实例代码
2019/08/14 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
Canvas与图片压缩的示例代码
2017/11/28 HTML / CSS
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
合作协议书范文
2014/08/20 职场文书
铣工实训报告
2014/11/05 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
研究生导师推荐信
2015/03/25 职场文书
留学推荐信(中英文版)
2015/03/26 职场文书
2016年国庆节宣传标语
2015/11/25 职场文书
2016年第二十届“母亲节暨幸福工程救助贫困母亲活动日”活动总结
2016/04/06 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
手残删除python之后的补救方法
2021/06/26 Python
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记