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脚本实现统计日志文件中的ip访问次数代码分享
Aug 06 Python
跟老齐学Python之集合的关系
Sep 24 Python
python使用xmlrpclib模块实现对百度google的ping功能
Jun 02 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
Python中音频处理库pydub的使用教程
Jun 07 Python
python 3.5实现检测路由器流量并写入txt的方法实例
Dec 17 Python
http请求 request失败自动重新尝试代码示例
Jan 25 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 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
kohana框架上传文件验证规则写法示例
2014/07/14 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
jQuery实现美观的多级动画效果菜单代码
2015/09/06 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
jQuery实现字符串全部替换的方法
2016/12/12 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
基于JS实现数字动态变化显示效果附源码
2019/07/18 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
js中script的上下放置区别,Dom的增删改创建操作实例分析
2019/12/16 Javascript
小程序简单两栏瀑布流效果的实现
2019/12/18 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
详解如何设置Python环境变量?
2019/05/13 Python
python实现按关键字筛选日志文件
2019/12/24 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
关于多元线性回归分析——Python&SPSS
2020/02/24 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
个人找工作自荐信格式
2013/09/21 职场文书
公务员的自我鉴定
2013/10/26 职场文书
标准自荐信范文
2014/01/29 职场文书
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
六五普法宣传标语
2014/10/06 职场文书
导游词400字
2015/02/13 职场文书
SqlServer: 如何更改表的文件组?(进而改变存储位置)
2021/04/05 SQL Server