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统计一个文本中重复行数的方法
Nov 19 Python
Python中字符串的格式化方法小结
May 03 Python
python实现决策树
Dec 21 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
如何使用Python标准库进行性能测试
Jun 25 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
详解Python 循环嵌套
Jul 09 Python
学python爬虫能做什么
Jul 29 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
Jan 06 Python
Python - 10行代码集2000张美女图
May 23 Python
python基础学习之递归函数知识总结
May 26 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php visitFile()遍历指定文件夹函数
2010/08/21 PHP
PHP模块 Memcached功能多于Memcache
2011/06/14 PHP
PHP性能优化准备篇图解PEAR安装
2011/12/05 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
2012/01/13 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
JavaScript实现16进制颜色值转RGB的方法
2015/02/09 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式
2016/09/01 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
jsonp跨域请求实现示例
2017/03/13 Javascript
详解nodejs爬虫程序解决gbk等中文编码问题
2017/04/06 NodeJs
vue监听滚动事件实现滚动监听
2017/04/11 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
vue项目在安卓低版本机显示空白的原因分析(两种)
2018/09/04 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
Vue.extend 编程式插入组件的实现
2019/11/18 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
python实现堆栈与队列的方法
2015/01/15 Python
Python脚本实时处理log文件的方法
2016/11/21 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python格式化字符串f-string概览(小结)
2019/06/18 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
15行Python代码实现免费发送手机短信推送消息功能
2020/02/27 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
副主任竞聘演讲稿
2014/08/18 职场文书
收费员岗位职责
2015/02/14 职场文书
党员转正介绍人意见
2015/06/03 职场文书
股权投资协议书
2016/03/23 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android