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运行其他程序的实现方法
Jul 14 Python
Python3 操作符重载方法示例
Nov 23 Python
Python自动化运维之Ansible定义主机与组规则操作详解
Jun 13 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Django RBAC权限管理设计过程详解
Aug 06 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
python logging设置level失败的解决方法
Feb 19 Python
python3字符串输出常见面试题总结
Dec 01 Python
用python批量移动文件
Jan 14 Python
python装饰器代码解析
Mar 23 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
星际RPG字典
2020/03/04 星际争霸
php 数据结构之链表队列
2017/10/17 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
更靠谱的H5横竖屏检测方法(js代码)
2016/09/13 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
2019/04/28 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Python检测生僻字的实现方法
2016/10/23 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
python 定义n个变量方法 (变量声明自动化)
2018/11/10 Python
Python调用C语言的实现
2019/07/26 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
2019/08/27 Python
Python HTMLTestRunner如何下载生成报告
2020/09/04 Python
Python排序函数的使用方法详解
2020/12/11 Python
canvas环形倒计时组件的示例代码
2018/06/14 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
高中毕业生自我鉴定范文
2013/09/26 职场文书
父亲追悼会答谢词
2014/01/17 职场文书
国培远程培训感言
2014/03/08 职场文书
关于奉献的演讲稿
2014/05/21 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
委托证明模板
2014/09/16 职场文书
学校会议通知范文
2015/04/15 职场文书
Vue通过懒加载提升页面响应速度
2021/05/10 Vue.js
Python开发简易五子棋小游戏
2022/05/02 Python
如何基于python实现单目三维重建详解
2022/06/25 Python