关于flask如何设置位https的方法

起因

我因为有个项目需要模拟接口,做一个mock服务器。做完后我才发现,这个项目必须通过https去请求,所以最开始使用flask做的mock服务器就不能正常使用了。
这时候我有两个选择,第一个更改项目中的访问方式,把https改成http。第二个方案是把mock服务器那边改成https访问的方式。
说一下这两个方案的弊端:
第一个方案:如果使用这个方案,首先我们需要考虑项目整体的可兼容性,如果更改,可能会造成其他模块同样会出现问题,这里会有可能产生很麻烦的连锁反应。
第二个方案:使用第二个方案,我们只需要去弄flask那边的代码即可,而且是mock服务器,随便怎么弄都对项目没有影响,但是问题是我现在不知道怎么改位https的方式。

解决过程

其实解决过程很简单,无外乎就是搜索,问其他人这两个途径。搜索的话可以百度,google。问的话可以问同事,朋友。

代码展示

#!/usr/bin/python3
# -*- coding: utf-8 -*-
from flask import jsonify, Flask, request

# 引入flask_sslify 模块,使用SSLify方法可以让已经生成flask的操作对象进行ssl配置
from flask_sslify import SSLify

app = Flask(__name__)
# 增加配置,支持中文显示
app.config['JSON_AS_ASCII'] = False

# 对flask操作对象进行ssl配置
sslify = SSLify(app)

# 预定义context。如果使用本机的证书,就把context设为"adhoc",否则,设为元组("crt证书文件名","key证书文件名")。证书可以去网站运营商那里申请,也可以使用openssl生成。
context = "adhoc"

@app.route('/xxx/data-structure', methods=['GET'])
def get_data_group():
    """
    获取数据结构
    :return:
    """
    data = {
        "code": 0,
        "data": [{
            "id": 1,
            "name": "xxx",
            "status": "1"
        }, {
            "id": 2,
            "name": "xxxx",
            "status": "0"
        }, {
            "id": 3,
            "name": "xxxxxx",
            "status": "1"
        }]
    }
    return jsonify(data)

@app.route('/xxx/data-create', methods=['POST'])
def create_data():
    """
    创建数据结构
    """
    args = request.get_json()
    if not args:
        return "新建数据结构失败"
    
    data = {
        "code": 0,
        "data": 4
    }
    return jsonify(data)

if __name__ == '__main__':
    # 设置ssl_context参数为context,这时候再去访问,就是通过https的方式了
    app.run(host = '0.0.0.0',port = 9000,debug = True, ssl_context=context)
posted @ 2022-04-26 11:31  影梦无痕  阅读(531)  评论(0编辑  收藏  举报