python调用API
相信做过自动化运维的同学都用过API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。
本文主要介绍Python中调用API的几种方式,下面是Python中会用到的库。
- urllib2
- httplib2
- pycurl
- requests
1.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调用API的更多相关文章
- Python调用API接口的几种方式 数据库 脚本
Python调用API接口的几种方式 2018-01-08 gaoeb97nd... 转自 one_day_day... 修改 微信分享: 相信做过自动化运维的同学都用过API接口来完成某些动作.AP ...
- Python调用API接口的几种方式
Python调用API接口的几种方式 相信做过自动化运维的同学都用过API接口来完成某些动作.API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课. 本文主要介绍py ...
- python调用api方式
1.shell版本 #!/bin/bash #根据api提供商,获取指定时间格式 datestr=`xxx` #根据api提供商,获取指定加盐密码格式 pwdstr=`xxx` curl -s -X ...
- python 调用API时异常捕获的技巧
- 『Python』Python 调用 ZoomEye API 批量获取目标网站IP
#### 20160712 更新 原API的访问方式是以 HTTP 的方式访问的,根据官网最新文档,现在已经修改成 HTTPS 方式,测试可以正常使用API了. 0x 00 前言 ZoomEye 的 ...
- 如何用 Python 和 API 收集与分析网络数据?
摘自 https://www.jianshu.com/p/d52020f0c247 本文以一款阿里云市场历史天气查询产品为例,为你逐步介绍如何用 Python 调用 API 收集.分析与可视化数据.希 ...
- 使用Python调用Flickr API抓取图片数据
Flickr是雅虎旗下的图片分享网站,上面有全世界网友分享的大量精彩图片,被认为是专业的图片网站.其API也很友好,可以实现多种功能.这里我使用了Python调用其API获得了大量的照片数据.需要注意 ...
- paip.java c# .net php python调用c++ c dll so windows api 总结
paip.java c# .net php python调用c++ c dll so windows api 总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来 ...
- python调用openstack的api,create_instance的程序解析
python调用openstack的api,create_instance的程序解析 2017年10月17日 15:27:24 CloudXli 阅读数:848 版权声明:本文为博主原创文章,未经 ...
随机推荐
- [转]Git学习笔记与IntelliJ IDEA整合
Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...
- link with editor
在左侧explore上,有个双向的箭头,点一下,就会把路径和当前文件自动对应
- c++ 用构造函数
1.c++ 用构造函数创建一个对象时,对象里的属性应该是全新的不存在把之前的属性留下的问题.之所以debug里会存在上一个变量的信息,应该是debug里的一个bug,与程序无光.
- 将Spring源代码导入eclipse步骤
深入学习spring.研读源代码是必须的~ 1.到https://github.com/spring-projects/spring-framework/releases去找自己须要的spring版本 ...
- day26<网络编程>
网络编程(网络编程概述) 网络编程(网络编程三要素之IP概述) 网络编程(网络编程三要素之端口号概述) 网络编程(网络编程三要素协议) 网络编程(Socket通信原理图解) 网络编程(UDP传输) 网 ...
- Java类的设计----Object 类
Object类 Object类是所有Java类的根父类如果在类的声明中未使用extends关键字指明其父类,则默认父类为Object类 public class Person { ... } 等价于: ...
- 13年10月 月赛第一场 set 4 迷宫问题
题目 给定一个n*m的迷宫,如S....#E.E其中,S代表开始位置,#代表不可行走的墙,E代表出口.主人公从开始位置出发,每次等概率的随机选择下一个可以行走的位置(可能会发生回溯),直到到达某一个出 ...
- python2.0_s12_day10_rabbitMQ使用介绍
RabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(M ...
- laravel 模版赋值
1)一般赋值是直接用view助手函数返回的 return view('Index/index', ['key'=>'value']); 2)一般做系统时,我们都会有一个共同控制器,其他控制器继承 ...
- python常用BIF汇总
append():在列表末尾增加一个数据项:例如a.append('hello') pop():用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值:例如a.pop() extend(): ...