python调用接口的实现是怎样的,有几种方式

Admin 2022-08-15 群英技术资讯 318 次浏览

今天就跟大家聊聊有关“python调用接口的实现是怎样的,有几种方式”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“python调用接口的实现是怎样的,有几种方式”文章能对大家有帮助。


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调用接口的实现是怎样的,有几种方式”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: python调用接口

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服