Python调用API接口的几种方式

相信做过自动化运维的同学都用过API接口来完成某些动作。API是一套成熟系统所必需的接口,可以被其他系统或脚本来调用,这也是自动化运维的必修课。

本文主要介绍python中调用API的几种方式,下面是python中会用到的库。

- urllib2

- httplib2

- pycurl

- requests

  1. urllib2
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()

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这种方式代码最简洁,最清晰,建议采用。

时间: 2024-10-31 03:12:19

Python调用API接口的几种方式的相关文章

动态调用WebService接口的几种方式

一.什么是WebService? 这里就不再赘述了,想要了解的====>传送门 二.为什么要动态调用WebService接口? 一般在C#开发中调用webService服务中的接口都是通过引用过来就行调用的,步骤如下: 1.找到引用,右击添加服务引用,找到高级,添加web引用,添加之后就可以直接调用里面的方法. 以上这种方法是最简单粗暴的一种方式.当然在开发中总是不那么如意,以上方式是在本机直接可以访问服务的地址,假如在本机不能直接访问WebService,那么就会有些蛋疼. 这种方式就不可取了

python用requests和urllib2两种方式调用图灵机器人接口

最近从网上看见个有意思的图灵机器人,可以根据不同的信息智能回复,比如你发送一个"讲个笑话",它就会给你回复一个笑话,或者"北京天气"就可以回复天气情况,或者英文单词然后给你回复中文释义.官方文档中有php和java的调用方式,我就弄个python的吧. 注册获取API KEY 这一步很简单,直接注册一个账号就可以看到你的API KEY.这个KEY我们以后发送get请求的时候需要用到. Pythoh调用示例 掉用也比较简单,主要是模拟post 请求.然后解析 json

在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入

在我之前介绍的混合式开发框架中,其界面是基于Winform的实现方式,后台使用Web API.WCF服务以及直接连接数据库的几种方式混合式接入,在Web项目中我们也可以采用这种方式实现混合式的接入方式,虽然Web API或者WCF方式的调用,相对直接连接数据库方式,响应效率上略差一些,不过扩展性强,也可以调动更多的设备接入,包括移动应用接入,网站接入,Winfrom客户端接入,这样可以使得服务逻辑相对独立,负责提供接口即可.这种方式中最有代表性的就是当前Web API的广泛应用,促进了各个接入端

C# 调用API接口处理公共类 自带JSON实体互转类

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; using System.Web; n

python对于中文编码处理的几种方式

我们在编写程序或者脚本的时候,会遇到"中文"编码的问题,导致整个程序无法正常运行,古整理了目前知道的所有"python对于中文编码处理的几种方式",具体如下: #coding=utf-8 #如何中文输出'python的中文编码方式' #方法一:头部加  [# -*- coding: utf-8 -*-] n = 'python的中文编码方式111111' print n #方法二:头部加  [#coding=utf-8] print 'python的中文编码方式22

zabbix调用api接口批量添加主机

zabbix调用api接口批量添加主机,这里用的是python 2.7(需安装xlrd模块处理表格). (1)到官网下载xlrd模块:https://pypi.python.org/pypi/xlrd (2)解压压缩包:tar xvf xlrd-1.0.0.tar.gz(3)进入到解压的文件夹运行python setup.py install命令安装 1.整理一个excel表格(test.xlsx),格式如下: 2.addhost.py脚本,添加主机名.显示名称.dns主机名.群组.模板字段(网

【转】python之配置日志的几种方式

[转]python之配置日志的几种方式 作为开发者,我们可以通过以下3种方式来配置logging: 1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数: 2)创建一个日志配置文件,然后使用fileConfig()函数来读取该文件的内容: 3)创建一个包含配置信息的dict,然后把它传递个dictConfig()函数: 需要说明的是,logging.basicConfig()也属于第一种方式,它只是对loggers, handlers

python编写api接口

 目标: 使用Python实现一个简单的接口服务,可以通过get.post方法请求该接口,拿到响应数据.创建一个api_server.py文件, 想要实现的效果是这样的: 添加代码如下:  1 import flask,json 2 from flask import request 3 4 ''' 5 flask: seb框架,通过flask提供的装饰器@server.route()将普通函数转换为服务 6 登录接口,需要传入url,username,passwd 7 ''' 8 9 #创建一

php调用c/c++的一种方式

php调用c/c++的一种方式 php调用c/c++有很多方式,最常用的是通过tcp或者http去调用,通过发送请求去调用c/c++编写的cgi/fastcgi来实现,另外php还有一种直接执行外部应用程序的方式,这种方式会影响到系统安全,容易被攻击者利用,所以使用的时候要谨慎处理好用户输入 php执行外部二进制命令的函数有好几个,比如exec和passthru,并且passthru函数能执行命令并且可以返回外部命令的输出,所以本次就使用passthru来实现,php调用c/c++函数的目的就是