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 相关文章推荐
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
python获取指定字符串中重复模式最高的字符串方法
Jun 29 Python
jupyter notebook 中输出pyecharts图实例
Apr 23 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
Aug 12 Python
python为QT程序添加图标的方法详解
Mar 09 Python
python中adb有什么功能
Jun 07 Python
Python环境管理virtualenv&virtualenvwrapper的配置详解
Jul 01 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php若干单维数组遍历方法的比较
2011/09/20 PHP
php中自定义函数dump查看数组信息类似var_dump
2014/01/27 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
php时间计算相关问题小结
2016/05/09 PHP
thinkphp下MySQL数据库读写分离代码剖析
2017/04/18 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
2017/08/29 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Laravel 5.5 异常处理 & 错误日志的解决
2019/10/17 PHP
jquery实现图片裁剪思路及实现
2013/08/16 Javascript
JavaScript中的prototype.bind()方法介绍
2014/04/04 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
简单介绍JavaScript数据类型之隐式类型转换
2015/12/28 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
react中使用swiper的具体方法
2018/05/15 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
2018/05/17 Javascript
JS实现的视频弹幕效果示例
2018/08/17 Javascript
移动端(微信等使用vConsole调试console的方法
2019/03/05 Javascript
[27:02]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第三场
2014/05/24 DOTA
浅谈python在提示符下使用open打开文件失败的原因及解决方法
2018/11/30 Python
在python中以相同顺序shuffle两个list的方法
2018/12/13 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
布鲁明戴尔百货店:Bloomingdale’s
2016/12/21 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
秘书专业自荐信范文
2013/12/26 职场文书
批评与自我批评范文
2014/10/15 职场文书
补充协议书
2015/01/28 职场文书
服务员岗位职责范本
2015/04/09 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js