Python Flask、Requests的简单使用

        笔者需要在服务器上使用python运行一个程序(函数),通过该函数可以从其他机器通过URL的方式进行调用,由于从未接触过类似的程序,所以第一次进行学习和使用,本篇文章也只是对自己学习的记录,较为简单。

一、创建Flask API

        导入flask模块,传输数据使用json格式,导入json模块,以及自己实现的相应函数模块

from flask import Flask, jsonify, request
import json
from screenshot import nerf2screenshot, nerf2screenshot_base64

        创建一个应用app

app = Flask(__name__)

二、创建路由Route

①简单GET

        创建一个路由route,其中指定访问的地址以及发送的请求的方法method,这里的methods中可以使用多种方法,该位置即为前端或者user调用你的API时,请求方法为"GET"时,url为默认时,调用index()函数

test_json = {}
test_json["name"] = ["WangWu"]
test_json["id"] = ["66663333"]


@app.route('/', methods=["GET"])
def index():
    return jsonify(test_json)

     ②简单POST

        前端或者user需要传递相关参数给服务器函数相关的参数,所以在请求时,通过post的方式可以将数据传给服务器函数,大致流程如下:

        全过程通过Json进行数据传输,可以通过flask中的get_data获取从前端或者user传输的参数。以下代码中,通过get_data函数获取Json字符,通过转换将该Json转为字典dict传入所需要运行的函数nerf2screenshot_base64(),该函数的运行结果返回的是字典,通过flask中jsonnify函数将字典转换为json返回给前端或者user,也可以直接返回json格式的字符

@app.route('/screenshot/', methods=["POST"])
def get_screenshot():
    info = request.get_data()
    info_json = json.loads(info)
    return jsonify(nerf2screenshot_base64(info_json))

三、运行程序API

        主函数调用app.run即可运行发布API程序,这里使用的host = '0.0.0.0'可以使得局域网内的用户都可以访问,访问地址为本机ip加端口;若为默认只有本机可以进行访问,访问地址为localhost地址加端口

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)

 四、API的使用

        API的使用需要在另一个文件中进行写, 配合requests库进行调用API(这里的requests库和前面的request函数不一样),以下是我调用服务的具体实现,其中很多为对返回数据的具体使用,定义url,调用requests.post函数,函数参数为url以及需要传向服务器的参数json,该函数返回值即为服务器中调用函数(get_screenshot)并处理过后所返回的值,后面即为对返回值进行的操作,以完成我的需求

def post_server(screenshot_jsonfile, save_dir):
    url = "http://223.2.38.143:5000/screenshot/"
    with open(screenshot_jsonfile, 'r') as f:
        images_info = json.load(f)
    images_bs64 = requests.post(url, json=images_info)
    images_json = json.loads(images_bs64.text)  # turn to dict
    with open(save_dir + "image.json", "w") as f:
        json.dump(images_json, f)
    for idx in range(len(images_json["images_base64"])):
        img_js = images_json["images_base64"][int(idx)]
        file_path = img_js["file_path"]
        img_bytes = base64.b64decode(img_js["base64_code"])
        img = Image.open(BytesIO(img_bytes))
        img.save(save_dir + file_path, "JPEG")

        以上是我自己对python flask和requests学习的过程,比较简单,目的是对自己的学习过程进行记录,如有问题,敬请指正 !!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值