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中文编码问题小结
Sep 28 Python
Python 中Pickle库的使用详解
Feb 24 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
Python3.5 Pandas模块缺失值处理和层次索引实例详解
Apr 23 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
MxNet预训练模型到Pytorch模型的转换方式
May 25 Python
Python代码需要缩进吗
Jul 01 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 Python
解决python 执行shell命令无法获取返回值的问题
Dec 05 Python
python使用scapy模块实现ping扫描的过程详解
Jan 21 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
Jan 24 Python
Python操作Excel的学习笔记
Feb 18 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简单系统查询模块代码打包下载
2008/06/07 PHP
基于empty函数的判断详解
2013/06/17 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
2013/07/05 PHP
php实现分页显示
2015/11/03 PHP
在线编辑器的实现原理(兼容IE和FireFox)
2007/03/09 Javascript
input 高级限制级用法
2009/03/26 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
2013/07/25 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
2014/09/06 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
jquery代码实现多选、不同分享功能
2015/07/31 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
vue组件从开发到发布的实现步骤
2018/11/11 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
vue中@change兼容问题详解
2019/10/25 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
深入分析python中整型不会溢出问题
2018/06/18 Python
详解django2中关于时间处理策略
2019/03/06 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
意大利单身交友网站:Meetic
2020/07/12 全球购物
应届生文秘专业个人自荐信格式
2013/09/21 职场文书
庆六一文艺汇演活动方案
2014/08/26 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
2015年大学教师工作总结
2015/05/20 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
详细谈谈JavaScript中循环之间的差异
2021/08/23 Javascript
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers