博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask开发restful api系列(6)-配置文件
阅读量:4501 次
发布时间:2019-06-08

本文共 2624 字,大约阅读时间需要 8 分钟。

  任何一个好的程序,配置文件必不可少,而且非常重要。配置文件里存储了连接数据库,redis的用户密码,不允许有任何闪失。要有灵活性,用户可以自己配置;生产环境和开发环境要分开,最好能简单的修改一个东西,就能达到要求;要有安全性,最好的方式,即使有一天前端服务器被窃取信息,配置文件里的信息也不能泄露。

  python本身带有configparser库,可以解析普通文件的配置,但是这样不但繁琐,而且安全性也得不到保证。我在前面一再强调,能达到自己要求的实现方式,就是最好的方式。flask官方例子有一个非常好的事例,就是config文件本身就是一个py文件,直接导入,代码简单、实用。连接我们之前的代码,我写了如下配置文件。

config.py

class Config(object):    SECRET_KEY = 'saduhsuaihfe332r32rfo43rtn3noiYUG9jijoNF23'    QINIU_ACCESS_KEY = 'hP7WNic×××××××××××××××××××××××××oZfrVs6'    QINIU_SECRET_KEY = 'bBZ×××××××××××××××××××××××××××××××××VAV'    BUCKET_NAME = 'dameinv'class DevelopmentConfig(Config):    DEBUG = True    REDIS_HOST = 'localhost'    REDIS_PORT = 6380    REDIS_DB = 4    REDIS_PASSWORD = '××××××'    MYSQL_INFO = "mysql://root:××××××××@127.0.0.1:3306/blog01?charset=utf8"class ProductionConfig(Config):    DEBUG = False    REDIS_HOST = 'server-ip'    REDIS_PORT = 6380    REDIS_DB = 4    REDIS_PASSWORD = '×××××××××××'    MYSQL_INFO = "mysql://××××××××××@server-ip:3306/blog01?charset=utf8"
Conf = DevelopmentConfig

  整个过程非常简单,就3个类,基类是Config,这里面记载的配置信息,都各种开发环境公用的。如果有配置不公用,就把具体的配置信息放到子类中去,我们只需要引用具体的子类即可,每次从开发环境转移到生产环境时,只需要修改Conf参数就可以了。

  下面在view和model里面使用一下吧。

  首先在view.py里面,把定义的那部分代码修改如下:

from config import Confapp = Flask(__name__)app.config.from_object(Conf)app.secret_key = app.config['SECRET_KEY']app.redis = redis.Redis(host=app.config['REDIS_HOST'], port=app.config['REDIS_PORT'],                        db=app.config['REDIS_DB'], password=app.config['REDIS_PASSWORD'])app.q = Auth(access_key=app.config['QINIU_ACCESS_KEY'], secret_key=app.config['QINIU_SECRET_KEY'])bucket_name = app.config['BUCKET_NAME'] ×××××××××××××××
@app.route('/user') @login_check def user():     user = g.current_user     nickname = app.redis.hget('user:%s' % user.phone_number, 'nickname')     return jsonify({'code': 1, 'nickname': nickname, 'phone_number': user.phone_number}) ××××××××××××××××××
if __name__ == '__main__':   app.run(debug=app.config['DEBUG'], host='0.0.0.0', port=5001)

其他代码就省略了,跟之前版本一样,只是让大家看到效果不同,每个东西,都可以在配置文件里进行修改。从开发环境转到生产环境,只需要在config.py文件里修改一下即可。是不是非常简单?

同理,model.py也一样

from config import Confengine = create_engine(Conf.MYSQL_INFO, pool_recycle=7200)

model里面,没有使用app环境来config,大家一定要记住,程序是写的,怎么简单,怎么写,只要不影响效率,千万不要被框架限定死。

 

  好了,上面显示了,怎么用config.py文件来做配置文件,基本使用会了,但是上面所说的安全性呢?如果哪天前端服务器的密码被别人知道了,或者网站有重大漏洞,被别人看到config.py文件,他岂不是知道所有数据库和redis的信息?那怎么做呢?其实也很简单,直接引用config.pyc文件即可,上传正式服务器的时候,把config.py文件给移除出去。是不是很傻瓜?没关系,像我之前所说的那样,如果能用最简单的办法达到目的,我为何还要走弯路呢?当然,还是挡不住高手的,他们可以反编译pyc文件,这个就不要钻牛角尖了。

  整个配置文件是不是很简单,这一章就讲到这,下一章,我们讲讲flask restful api最最精华的一部分,蓝图。

  

转载于:https://www.cnblogs.com/yueerwanwan0204/p/5522507.html

你可能感兴趣的文章
Android自动化压力测试之Monkey Test 异常解读(五)
查看>>
Compressing Convolutional Neural Networks in the Frequency Domain 论文笔记
查看>>
设计模式:单例和多例
查看>>
Myslq 之修改数据库
查看>>
maven工程转为web工程时没有add web project capabilities选项的解决办法
查看>>
[BZOJ1192][HNOI2006]鬼谷子的钱袋
查看>>
正则表达式之 数据验证 与 文本替换
查看>>
CLR via C#:CLR的执行模型
查看>>
JS获取服务器时间
查看>>
如何对数据排序和拆分文件
查看>>
数据解析01-15
查看>>
linux 安装mysql数据库——yum安装法
查看>>
Several ports (8005, 80, 8009) required by Tomcat v6.0 Server at localhost are already in use
查看>>
事件监听器
查看>>
设计模式之单例设计模式
查看>>
异常的基本概念
查看>>
iOS 离屏渲染学习笔记
查看>>
iOS Xib布局某些控件显示或隐藏<约束的修改>
查看>>
苹果端手机微信页面长按图片无法保存的解决方案
查看>>
球的移动(move)
查看>>