添加了api接口需要key的规则

This commit is contained in:
MarkusJoe
2022-04-10 14:31:24 +08:00
parent b59bf10970
commit bf9b3fac1f
9 files changed
+151 -40

No files matched your search

+13 -2
View File
@@ -9,12 +9,23 @@ from . import api
from flask import jsonify
@api.errorhandler(403)
def forbidden(e):
return jsonify(
{
'code': 403,
'msg': 'API: 没有权限',
'data': None
}
), 403
@api.errorhandler(404)
def page_not_found(e):
return jsonify(
{
'code': 404,
'msg': '页面未找到',
'msg': 'API: 页面未找到',
'data': None
}
), 404
@@ -25,7 +36,7 @@ def internal_server_error(e):
return jsonify(
{
'code': 500,
'msg': '服务器内部错误',
'msg': 'API: 服务器内部错误',
'data': None
}
), 500
+45
View File
@@ -6,14 +6,33 @@
# @File Name: views.py
import os
from functools import wraps
from flask import abort
from flask import jsonify
from flask import request
from flask import send_file
from ..db.db import SQLite as db
from . import api
def permission_required(func):
@wraps(func)
def decorated_func(*args, **kwargs):
if request.args.get('key') != os.getenv('ACCESS_KEY'):
abort(403)
return func(*args, **kwargs)
return decorated_func
@api.route('/overall/', methods=['GET', 'POST'])
@permission_required
def overall():
"""
查询ReqCount表内所有的源数据
:return:
"""
limit = request.args.get('limit', type=int)
try:
data = db().exec('select * from reqcount;')
@@ -38,7 +57,12 @@ def overall():
@api.route('/query/', methods=['GET', 'POST'])
@permission_required
def query():
"""
查询指定名称的计数数据
:return:
"""
name = request.args.get('name', type=str)
nochange = request.args.get('nochange', type=bool)
if nochange:
@@ -63,7 +87,12 @@ def query():
@api.route('/theme/', methods=['GET', 'POST'])
@permission_required
def theme():
"""
查询数据库内主题的源数据
:return:
"""
_theme = request.args.get('name', type=str)
if not db().exists_table(_theme):
return jsonify(
@@ -85,7 +114,12 @@ def theme():
@api.route('/alltables/', methods=['GET', 'POST'])
@permission_required
def all_tables():
"""
查询所有已有表
:return:
"""
data = db().show_tables
return jsonify(
{
@@ -94,3 +128,14 @@ def all_tables():
'data': data
}
), 200
@api.route('/export/', methods=['GET', 'POST'])
@api.route('/export/<key>', methods=['GET', 'POST'])
@permission_required
def export(key: str = None):
"""
导出数据库文件
:return:
"""
return send_file('./db/data.sqlite', as_attachment=True)