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 字符串split的用法分享
Mar 23 Python
对Python的Django框架中的项目进行单元测试的方法
Apr 11 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
使用Python监视指定目录下文件变更的方法
Oct 15 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
解决TensorFlow模型恢复报错的问题
Feb 06 Python
Pytest mark使用实例及原理解析
Feb 22 Python
浅谈keras保存模型中的save()和save_weights()区别
May 21 Python
Python能做什么
Jun 02 Python
Python模块zipfile原理及使用方法详解
Aug 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 应用程序安全防范技术研究
2009/09/25 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
jQuery 设置 CSS 属性示例介绍
2014/01/16 Javascript
javascript的列表切换【实现代码】
2016/05/03 Javascript
jquery自动补齐功能插件flexselect用法示例
2016/08/06 Javascript
Node.js连接MongoDB数据库产生的问题
2017/02/08 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
React Native模块之Permissions权限申请的实例相机
2017/09/28 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
使用js实现一个简单的滚动条过程解析
2019/09/10 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
深入理解Python 代码优化详解
2014/10/27 Python
Python实现的使用telnet登陆聊天室实例
2015/06/17 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
Unicode和Python的中文处理
2017/03/19 Python
Django使用HttpResponse返回图片并显示的方法
2018/05/22 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python 实现查找文件并输出满足某一条件的数据项方法
2019/06/12 Python
python实现控制COM口的示例
2019/07/03 Python
django ORM之values和annotate使用详解
2020/05/19 Python
Python Django搭建网站流程图解
2020/06/13 Python
浅谈Python __init__.py的作用
2020/10/28 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
详解CSS中iconfont的使用
2015/08/04 HTML / CSS
工作表现评语
2014/01/19 职场文书
公司贷款承诺书
2014/05/30 职场文书
党员个人整改方案及措施
2014/10/25 职场文书
生产现场禁烟通知
2015/04/23 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
swagger如何返回map字段注释
2021/07/03 Java/Android
JavaScript实现九宫格拖拽效果
2022/06/28 Javascript