关于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)