python中调用API的几种方式:

- urllib2
- 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、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
import requests
from lxml import etree
from random import randint def get_joke():
url="http://www.qiushibaike.com/text/page/"+ str(randint(1,5))
r = requests.get(url)
tree = etree.HTML(r.text)
contentlist = tree.xpath('//div[@class="content"]/span')
jokes = []
for content in contentlist:
content = content.xpath('string(.)') # string() 函数将所有子文本串联起来,# 必须传递单个节点,而不是节点集。
if '查看全文' in content: # 忽略包含“查看原文”笑话
continue
jokes.append(content)
joke = jokes[randint(1, len(jokes))].strip()
return joke if __name__ == "__main__":
content = get_joke()
print(content)

二、python一个http接口服务,给别人调用 ----之Flask

案例1、flask、get接口代码实现

# -*- coding: UTF-8 -*-
# flask

from flask import Flask, request, jsonify app = Flask(__name__) @app.route('/test', methods=["GET"])
def calculate():
a = request.args.get("a", 0)
b = request.args.get("b", 0)
c = int(a) + int(b)
res = {"result": c}
return jsonify(content_type='application/json;charset=utf-8',
reason='success',
charset='utf-8',
status='200',
content=res) if __name__ == '__main__':
app.run(host='0.0.0.0',
threaded=True,
debug=False,

调用方式:

http://127.0.0.1:8080/test?a=1&b=4

案例2、post接口flask

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/test', methods=["POST"])
def calculate():
params = request.form if request.form else request.json
print(params)
a = params.get("a", 0)
b = params.get("b", 0)
c = a + b
res = {"result": c}
return jsonify(content_type='application/json;charset=utf-8',
reason='success',
charset='utf-8',
status='200',
content=res) if __name__ == '__main__':
app.run(host='0.0.0.0',
threaded=True,
debug=True,
port=8080)

调用方式

http://127.0.0.1:8080/test

最常用接口形式

POST API接口:

import json
import requests
if __name__ == '__main__':
url = "http://127.0.0.1:9001/rsa/set_uplod"
headers = {'content-type': 'application/json'}
requestData = {"certificate_no": "56565656565656", "auth_code": "123456"}
ret = requests.post(url, json=requestData, headers=headers)
if ret.status_code == 200:
text = json.loads(ret.text)
print(text) get API 接口: import json
import requests if __name__ == '__main__': url = "http://127.0.0.1:9001/getSha1Test?message=APP000051527151133935949D49FDC0A86605313931B9BB9A4C87"
ret = requests.get(url)
if ret.status_code == 200:
text = json.loads(ret.text)
print(text)

三、二、python一个http接口服务,给别人调用 ----之FastAPI

这次选择fastapi,FastAPI是一个现代的、快速(高性能)的web框架,用于基于标准Python类型提示使用Python 3.6+构建api。具有快速、快速编码、更少的错误、直观、简单、简便、健壮。简易而且本地win10能够跑起来。

二、FastAPI的get接口代码实现

1.  安装:  pip install fastapi

pip install uvicorn

# !/usr/bin/python

from fastapi import FastAPI

app = FastAPI()

@app.get('/test/a={a}/b={b}')
def calculate(a: int=None, b: int=None):
c = a + b
res = {"res":c}
return res if __name__ == '__main__':
import uvicorn
uvicorn.run(app=app,
host="0.0.0.0",
port=8080,
workers=1)

接口访问:http://127.0.0.1:8080/test/a=1/b=4

from pydantic import BaseModel
from fastapi import FastAPI app = FastAPI() class Item(BaseModel):
a: int = None
b: int = None @app.post('/test')
def calculate(request_data: Item):
a = request_data.a
b = request_data.b
c = a + b
res = {"res":c}
return res if __name__ == '__main__':
import uvicorn
uvicorn.run(app=app,
host="0.0.0.0",
port=8080,
workers=1)

接口访问:http://127.0.0.1:8080/test

python调用接口方式的更多相关文章

  1. 大华摄像头报警接口中图片加密,python调用c++方式实现解密

    项目中,大华摄像头的报警信息,里面有图片地址,需要1天内取下来,保持留痕 可惜,图片下载后,加密了,大华提供了android,ios,c++例子,没有提供java解密例子 没办法,只好先用c++例子简 ...

  2. java如何调用接口方式二

    java如何调用接口 在实际开发过程中,我们经常需要调用对方提供的接口或测试自己写的接口是否合适,所以,问题来了,java如何调用接口?很多项目都会封装规定好本身项目的接口规范,所以大多数需要去调用对 ...

  3. java如何调用接口方式一

    java如何调用接口 其实对于java调用接口进行获取对方服务器的数据在开发中特别常见,然而一些常用的基础的知识总是掌握不牢,让人容易忘记,写下来闲的时候看看,比回想总会好一些. 总体而言,一些东西知 ...

  4. Python - 调用接口合并文件夹下多个Excel表

    在工作中经常遇到需要打开许多个excel表格,然后合并的需求,合并的同时要求格式必须原汁原味的保留.利用VBA代码可以比较轻松的解决,现在我们来看Python中如何实现. 上代码: from open ...

  5. python调用接口的方式

    python中调用API的几种方式: - urllib2 - httplib2 - pycurl - requests urllib2 import urllib2, urllib github_ur ...

  6. Python调用接口的几种方式

    1. requests import requests, jsongithub_url = 'https://api.github.com/user/repos'data = json.dumps({ ...

  7. python调用api方式

    1.shell版本 #!/bin/bash #根据api提供商,获取指定时间格式 datestr=`xxx` #根据api提供商,获取指定加盐密码格式 pwdstr=`xxx` curl -s -X ...

  8. python调用接口——requests模块

    前提:安装pip install requests 导入import requests 1.get请求   result=requests.get(url,d).json()  或  .text 2. ...

  9. python 调用接口

    这个比较乱,抽口再修改一下. 工作需要调有赞API的接口数据,  返回数据. 进行数据处理 现在两部分比较重要:1 自动获取数据  ,  2处理excel的过程. 明白接口的过程.传入参数   htt ...

随机推荐

  1. Linkerd 2.10(Step by Step)—2. 自动化的金丝雀发布

    通过结合 Linkerd 和 Flagger 来根据服务指标自动金丝雀(canary)发布,从而降低部署风险. Linkerd 2.10 中文手册持续修正更新中: https://linkerd.ha ...

  2. 说说对 Node 中的 fs 模块的理解? 有哪些常用方法?

    一.是什么 fs(file system),该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装 可以说,所有与文件的操作都是通过fs核心模块实现 导入模块如下: const fs  ...

  3. 对话Apache Hudi VP, 洞悉数据湖的过去现在和未来

    Apache Hudi是一个开源数据湖管理平台,用于简化增量数据处理和数据管道开发,该平台可以有效地管理业务需求,例如数据生命周期,并提高数据质量.Hudi的一些常见用例是记录级的插入.更新和删除.简 ...

  4. frp实现NAS外网访问

    开始 入手了NAS之后就看是漫漫的折腾内网穿透的不归路.用的最多最简单的是下面三种 QC:群晖自带的,速度在100kb左右,能不能连上有时候都是运气,极其不稳定. DDNS:最推荐的方式.上下行都取决 ...

  5. Task05:SQL高级处理

    5.1 窗口函数 5.1.1 窗口函数概念及基本的使用方法 窗口函数也称为OLAP函数.OLAP 是OnLine AnalyticalProcessing 的简称,意思是对数据库数据进行实时分析处理. ...

  6. Vue(1)Vue安装与使用

    前言 Vue(读音/vjuː/,类似于view) 是一套用于构建前后端分离的框架.刚开始是由国内优秀选手尤雨溪开发出来的,目前是全球"最"流行的前端框架.使用vue开发网页很简单, ...

  7. Map类型的Json格式

    示例代码: Map<String, Object> map = new HashMap<>();// boolean 类型 map.put("boolean" ...

  8. 【TCP/IP】TCP服务器并发处理&源码

    前言 本笔记记录的是 单个服务端并发式处理多个客户端. 下次有空在发个 单线程多个服务端并发式处理多种客户端.其实就是本笔记的一个改良版,用到select() / poll() / epoll(). ...

  9. Gitlab触发jenkins并获取项目post参数

    jenkins -- Generic Webhook Trigger插件 此插件是git webhook的高阶应用,安装后会暴露出来一个公共API,GWT插件接收到 JSON 或 XML 的 HTTP ...

  10. 「一本通 3.1 练习 4」Tree 题解

    题目描述 原题来自:2012 年国家集训队互测 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有 条白色边的生成树.题目保证有解. 输入格式 第一行V,E,need 分别表示点数, ...