python rest api_Python调用REST API接口的几种方式汇总
相信做过自动化运维的同学都用过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调用REST API接口的几种方式汇总
本文地址: http://www.cppcns.com/jiaoben/python/355428.html
python rest api_Python调用REST API接口的几种方式汇总相关推荐
- Python调用API接口的几种方式
本文主要介绍python中调用API的几种方式,下面是python中会用到的库. 1.urllib2 import urllib2, urllib github_url = 'https://api. ...
- cxf调用接口的几种方式_Java调用CXF WebService接口的两种方式实例
1.静态调用 // 创建WebService客户端代理工厂 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出 ...
- python调用地图api_python调用地图api接口
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- JAVA调用Web Service接口的五种方式
文章目录 1. 通过eclipse等直接生成Client 2. 通过JAVA命令wsimprot命令生成Client 3.通过axis直接调用(无需生成Client) 4.通过axis中的wsdl2j ...
- Android 调用系统api录音的两种方式(MediaRecorder、AudioRecord)
废话 权限.权限.权限,必须要先获取了录音权限,其他的事情晚点再说. 另外,新版本的Android 10系统会对录音有调整,引入了一个录音焦点的概念,也就是说以前的麦克风只能一个APP使用,必须要等它 ...
- 企查查、天眼查、启信宝API怎么批量操作调用,API接口应用场景。
企查查API:企业工商信用信息API数据接口 - 企查查开放平台 天眼查API:天眼查开放平台 | API数据接口 | 企业数据 - 天眼查 (tianyancha.com) 启信宝API:启信宝数据 ...
- python调用zabbix api接口实时展示数据
近日公司准备自已做一个运维管理平台,其中的监控部分,打算调用zabbix api接口来进行展示. 经过思考之后,计划获取如下内容: 1. 获得认证密钥 2. 获取zabbix所有的主机组 3. ...
- Python使用pyzabbix调用Zabbix API
Python使用pyzabbix调用Zabbix API Zabbix是一个开源的提供分布式系统监视以及网络监视功能的解决方案. Zabbix能监视各种网络参数,监控服务器系统的安全运营状况,并提供灵 ...
- vue项目:(全局变量设置与调用)API接口封装 - 代码篇
vue项目,如何将"API接口" 封装为"全局变量" ? 1. API全局配置文件[global.vue文件] <template><div& ...
最新文章
- POST和GET有什么区别? [重复]
- 吴恩达机器学习Ex2
- Node.js调用ffmpeg处理视频
- 泛洪攻击(Flood)与TCP代理(TCP proxy)
- 一些debug常用的魔法数值
- 导入Excel表里的数据时产生【定义了过多字段】,但有时又是成功的
- Vue.js开发环境搭建的介绍
- tensorflow2.0中的Broadcasting用法
- java kdj_基于Java语言开发的个性化股票分析技术随机指数[KDJ].doc
- oracle导入的表在哪,oracle导入导出表及表结构
- 基于java网上商城源码设计
- P2346 四子连棋 题解
- 医疗相关计算机系统,智能医疗信息管理系统
- win10电脑打开计算机快捷键,运行快捷键,教您win10打开运行快捷键是什么
- windows使用DD刻录工具刻录U盘
- 【PS】如何简单的处理带晒伤皮肤的婚纱照?红斑/脱皮/减淡红色
- Docker overlay 默认位置硬盘不足,如何更换位置
- Win11重启后无法进入系统解决办法
- 最近一直在想如何才能把我的想法变成现实
- 数据挖掘——文本挖掘-关键字提取
热门文章
- c++ opencv 通过网络连接工业相机_摄像头和机器人视觉开发中的「相机标定」,你了解多少?...
- tf.sequence_mask
- PyTorch框架学习八——PyTorch数据读取机制(简述)
- 听说你盗图都盗绿了?
- 我不藏了:7个技术体系、共100篇文章、总计1OO万字
- 安卓逆向_16 --- ARM 静态分析( 使用 IDA Pro 分析 ARM 汇编【java_ 和 JNI_OnLoad】 )
- 1110 Complete Binary Tree(甲级)
- linux建立动态库链接,Linux动态链接库.so文件的创建与使用
- 打印纸张尺寸换算_纸张尺寸与开(K)数换算
- arraylist 的扩容机制_每天都用ArrayList,你读过它的源码么?