def create_app(): app = Flask(__name__) with app.app_context(): flask_bcrypt.init_app(app) CORS(app) login_manager.init_app(app) app.config[ 'SECRET_KEY'] = 'the quick brown fox jumps over the lazy dog' cors = CORS(app, resources={r"/*": {"origins": "*"}}) ApiDoc(app) api = Api(app) app.config['API_DOC_MEMBER'] = ['api', 'platform'] # from backend.resources.user import user # app.register_blueprint(user) # from backend.resources.spring import spring # app.register_blueprint(spring) from backend.resources.data import data app.register_blueprint(data) app.config.from_object(config) return app
def create_app(config_name=None, config_path=None): app = Flask( __name__, template_folder=subprocess.os.path.join(subprocess.os.getcwd(), '\\template\\'), static_folder=subprocess.os.path.join(subprocess.os.getcwd(), '\\static\\'), ) app.config.from_object(config) db.init_app(app, ) api.init_app(app) ApiDoc(app, title='接口文档', version='1.0.0') # 读取配置文件 if not config_path: config_path = subprocess.os.path.join(subprocess.os.getcwd(), 'config\\config.yaml') if not config_name: config_name = 'PRODUCTION' conf = read_yaml(config_name, config_path) app.config.update(conf) if not subprocess.os.path.exists(app.config['LOGGING_PATH']): # 日志文件目录 subprocess.os.mkdir(app.config['LOGGING_PATH']) # 日志设置 with open(app.config['LOGGING_CONFIG_PATH'], 'r', encoding='utf-8') as f: dict_conf = yaml.safe_load(f.read()) logging.config.dictConfig(dict_conf) # 载入日志配置 return app, api
def create_app(): app = Flask(__name__, static_folder='../static', static_url_path='', template_folder='../static') CORS(app, resources={r"/*": {"origins": "*"}}, send_wildcard=True) # database_url = os.environ.get('OC_DB_URL', "postgresql://*****:*****@127.0.0.1:5432/manager") # print("database_url:{}".format(database_url)) # app.config["SQLALCHEMY_DATABASE_URI"] = database_url # app.config["SECRET_KEY"] = '1c0049e9387f42f2a5da2ec692f3c6d0' # app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True app.config["API_DOC_MEMBER"] = ['api/cases', 'api/images', 'api/tasks'] app_settings = os.getenv('APP_SETTINGS', 'app.config.DevelopmentConfig') app.config.from_object(app_settings) ApiDoc(app) register_blueprints(app) return app
# Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # Name of the Api blueprint to be displayed app.config["API_DOC_MEMBER"] = ["api", "platform"] # Name of the Submembers Api function to be excluded # app.config["API_DOC_MEMBER_SUB_EXCLUDE"] = ["delete_data"] # Disable markdown processing for all documents # app.config["API_DOC_ALL_MD"] = False ApiDoc( app, title="Sample App", version="1.0.0", description="A simple app API", ) api = Blueprint("api", __name__) platform = Blueprint("platform", __name__) @api.route("/add_data", methods=["POST"]) def add_data(): """Add some data @@@ ### args | args | required | request type | type | remarks | |-------|----------|--------------|------|----------|
from flask import Flask, jsonify from flask.views import MethodView from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # RESTful Api documents to be excluded app.config['RESTFUL_API_DOC_EXCLUDE'] = [] ApiDoc(app, title='Sample App Restful Methodview', version='0.1.4') class TodoList(MethodView): """Manage todolist""" def put(self): """Change the data """ return jsonify({'todos': 'put todolist'}) def delete(self): """Delete the data """ return jsonify({'todos': 'delete todolist'})
Last modified on 2020/10/29 Author: kwkw ''' import sys sys.path.append('.') import unittest from flask import Flask, Blueprint from flask_restful import Resource, Api from flask_docs import ApiDoc app = Flask(__name__) app.config['API_DOC_MEMBER'] = ['api'] ApiDoc(app, title='Test App') class AcceptTestCase(unittest.TestCase): def test_accept_docs_api(self): with app.test_client() as client: res = client.get('/docs/api/') self.assertEqual(res.status_code, 200) self.assertEqual(res.content_type, 'text/html; charset=utf-8') def test_accept_docs_api_data(self): with app.test_client() as client: res = client.get('/docs/api/data') self.assertEqual(res.status_code, 200)
import sys sys.path.append(".") import unittest from flask import Blueprint, Flask from flask_restful import Api, Resource from flask_docs import ApiDoc, change_doc app = Flask(__name__) app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "DELETE"] app.config["API_DOC_MEMBER"] = ["api", "platform"] app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todolistexclude"] ApiDoc(app, title="Test App") class AcceptTestCase(unittest.TestCase): def test_accept_docs_api(self): with app.test_client() as client: res = client.get("/docs/api/") self.assertEqual(res.status_code, 200) self.assertEqual(res.content_type, "text/html; charset=utf-8") def test_accept_docs_api_data(self): with app.test_client() as client: res = client.get("/docs/api/data") self.assertEqual(res.status_code, 200)
register_blueprints(app) init_app(flask_app) ''' 设置日志 ''' if flask_app.debug is not True: import logging from logging.handlers import RotatingFileHandler file_handler = RotatingFileHandler('python.log', maxBytes=1024 * 1024 * 100, backupCount=20) file_handler.setLevel(logging.ERROR) flask_app.logger.addHandler(file_handler) file_handler.setFormatter(logging.Formatter( '%(asctime)s %(levelname)s: %(message)s ' '[in %(pathname)s:%(lineno)d]' )) @flask_app.errorhandler(500) def internal_error(exception): flask_app.logger.error(exception) ApiDoc(flask_app) if __name__ == '__main__': flask_app.config['DEBUG'] = True flask_app.run()
app = create_app() app.secret_key = "ABCabc123" app.debug = True app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///test.db" # 本地加载 # app.config['API_DOC_CDN'] = False # 禁用文档页面 # app.config['API_DOC_ENABLE'] = False # 需要显示文档的 Api app.config["API_DOC_MEMBER"] = ["api", "platform"] ApiDoc(app, title="Sample App", version="1.0.0") api = Blueprint("api", __name__) platform = Blueprint("platform", __name__) #--结束文档设置 -- db = SQLAlchemy(app) stored_user = None login_manager = flask_login.LoginManager(app) # user_pass = {} # https://pypi.org/project/sqlitedict/ user_pass = SqliteDict('my_db.sqlite', autocommit=True)
api.add_resource(user.UserInfo, '/user/<string:username>/info') api.add_resource(user.ReportBind, '/user/reportbind') api.add_resource(user.ModifyInfo, '/user/modifyinfo') #admin api.add_resource(admin.AdminTest, '/admin/test') api.add_resource(admin.ShowAllReports, '/admin/report/all') api.add_resource(admin.ShowUnhandleReports, '/admin/report/unhandle') api.add_resource(admin.DenyReport, '/admin/report/deny') api.add_resource(admin.PassReport, '/admin/report/pass') # api.add_resource(admin.CancelBindAuthor, '/admin/cancel_bind_author') #取消用户认领 api.add_resource(admin.ShowAllUsers, '/admin/user/all') api.add_resource(admin.DeleteUser, '/admin/user/delete') #subscribe api.add_resource(subscribe.SubscribeAuthor, '/subscribe/author') api.add_resource(subscribe.SubscribePaper, '/subscribe/paper') api.add_resource(subscribe.CancelSubscribeAuthor, '/subscribe/cancel/author') api.add_resource(subscribe.CancelSubscribePaper, '/subscribe/cancel/paper') api.add_resource(subscribe.ShowSubscribeAuthor, '/subscribe/show/author') api.add_resource(subscribe.ShowSubscribePaper, '/subscribe/show/paper') api.add_resource(subscribe.AuthorIsSubscribed, '/subscribe/author/subscribed') api.add_resource(subscribe.PaperIsSubscribed, '/subscribe/paper/subscribed') api.add_resource(subscribe.SubscribeFund, '/subscribe/fund') api.add_resource(subscribe.CancelSubscribeFund, '/subscribe/cancel/fund') api.add_resource(subscribe.ShowSubscribeFund, '/subscribe/show/fund') api.add_resource(subscribe.FundIsSubscribed, '/subscribe/fund/subscribed') #文档生成 ApiDoc(app, title='Gugoo API Doc', version='0.1.1') #压缩 Compress(app) #跨域 CORS(app, supports_credentials=True)
from flask_restful import Resource, Api from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # RESTful Api documents to be excluded app.config['RESTFUL_API_DOC_EXCLUDE'] = [] restful_api = Api(app) ApiDoc(app, title='Sample App Restful', version='1.0.0') class TodoList(Resource): """Manage todolist""" def post(self): """Submission of data Args: pass Returns: pass """ return {'todos': 'post todolist'}
# Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # RESTful Api class name to exclude # app.config["API_DOC_RESTFUL_EXCLUDE"] = ["Todo"] # Auto generating request args markdown app.config["API_DOC_AUTO_GENERATING_ARGS_MD"] = True # Disable markdown processing for all documents # app.config["API_DOC_ALL_MD"] = False restful_api = Api(app) ApiDoc( app, title="Sample App Restful", version="1.0.0", description="A simple app restful API", ) class Todo(Resource): """Manage todo""" def post(self): """Add todo ### request ```json {"name": "xx", "type": "code"} ``` ### return
# app.config["API_DOC_CDN"] = True # Disable document pages # app.config["API_DOC_ENABLE"] = False # Methods allowed to be displayed # app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"] # Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # RESTful Api documents to be excluded # app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todo"] restful_api = Api(app) ApiDoc(app, title="Sample App Restful", version="1.0.0") class Todo(Resource): """Manage todo""" def post(self): """Add todo @@@ ### description > Add todo ### args | args | nullable | request type | type | remarks | |-------|----------|--------------|------|----------| | name | false | body | str | todo name |
# Methods allowed to be displayed # app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"] # Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # RESTful Api class name to exclude # app.config["API_DOC_RESTFUL_EXCLUDE"] = ["TodoList"] # Disable markdown processing for all documents # app.config["API_DOC_ALL_MD"] = False ApiDoc( app, title="Sample App MethodView", version="1.0.0", description="A simple app MethodView API", ) class TodoList(MethodView): """Manage todolist""" def put(self): """Change the data""" return jsonify({"todos": "put todolist"}) def delete(self): """Delete the data""" return jsonify({"todos": "delete todolist"})
from flask_restful import Resource, Api from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # RESTful Api documents to be excluded app.config['RESTFUL_API_DOC_EXCLUDE'] = [] restful_api = Api(app) ApiDoc(app, title='Sample App Restful', version='0.1.4') class TodoList(Resource): """Manage todolist""" def post(self): """Submission of data Args: pass Returns: pass """
from flask import Flask, jsonify from flask.views import MethodView from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # RESTful Api documents to be excluded app.config['RESTFUL_API_DOC_EXCLUDE'] = [] ApiDoc(app, title='Sample App Restful Methodview', version='1.0.0') class TodoList(MethodView): """Manage todolist""" def put(self): """Change the data """ return jsonify({'todos': 'put todolist'}) def delete(self): """Delete the data """ return jsonify({'todos': 'delete todolist'})
# Methods allowed to be displayed # app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"] # Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # Api Document needs to be displayed app.config["API_DOC_MEMBER"] = ["api"] # Disable markdown processing for all documents # app.config["API_DOC_ALL_MD"] = False ApiDoc( app, title="Sample App", version="1.0.0", description="A simple app decorator demo", ) api = Blueprint("api", __name__) return_json_str = '{"code": xxxx, "msg": "xxx", "data": null}' @api.route("/add_data", methods=["GET"]) @ApiDoc.change_doc({"return_json": return_json_str}) def add_data(): """Add some data @@@ ### return
kwkw """ import sys sys.path.append(".") import unittest from flask import Flask from flask_docs import ApiDoc app = Flask(__name__) app.config["API_DOC_ENABLE"] = "true" apidoc = ApiDoc(title="Test App") class ConfigTestCase(unittest.TestCase): def test_api_config_fail(self): try: apidoc.init_app(app) except ValueError as e: self.assertEqual(type(e), ValueError) if __name__ == "__main__": unittest.main()
from flask_docs import ApiDoc from flask_mail import Mail # celery! # from celery import Celery # celery = Celery(__name__, broker=Config.CELERY_BROKER_URL, backend=Config.CELERY_RESULT_BACKEND) # from flask import current_app # from app.Extensions import celery # celery.conf.update(app.config) # @celery.task() # with app.app_context(): # delay db = SQLAlchemy() mail = Mail() cache = Cache() apidoc = ApiDoc() # 初始化 def config_extensions(app): CORS(app, supports_credentials=True) cache.init_app(app, config={'CACHE_TYPE': 'simple'}) db.init_app(app) mail.init_app(app) apidoc.init_app(app)
from flask import Flask, render_template, jsonify, Blueprint from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # Api Document needs to be displayed app.config['API_DOC_MEMBER'] = ['api', 'platform'] ApiDoc(app, title='Sample App', version='1.0.0') api = Blueprint('api', __name__) platform = Blueprint('platform', __name__) @api.route('/add_data', methods=['POST']) def add_data(): """Add some data Add some data in this routing Args: pass Returns:
from flask import Flask, render_template, jsonify, Blueprint from flask_docs import ApiDoc app = Flask(__name__) # Using CDN # app.config['API_DOC_CDN'] = True # Disable document pages # app.config['API_DOC_ENABLE'] = False # Api Document needs to be displayed app.config['API_DOC_MEMBER'] = ['api', 'platform'] ApiDoc(app, title='Sample App', version='0.1.4') api = Blueprint('api', __name__) platform = Blueprint('platform', __name__) @api.route('/add_data', methods=['POST']) def add_data(): """Add some data Add some data in this routing Args: pass Returns:
from flask_apscheduler import APScheduler from config import Config # https://semver.org/lang/zh-CN/ __version__ = '0.4.4' db = SQLAlchemy() migrate = Migrate() login = LoginManager() login.login_view = 'auth.login' login.login_message = _l('Please log in to access this page.') mail = Mail() bootstrap = Bootstrap() babel = Babel() csrf = CSRFProtect() cors = CORS() doc = ApiDoc() scheduler = APScheduler() def create_app(config_class=Config): app = Flask(__name__) app.config.from_object(config_class) db.init_app(app) migrate.init_app(app, db) login.init_app(app) mail.init_app(app) bootstrap.init_app(app) babel.init_app(app) csrf.init_app(app) cors.init_app(app, supports_credentials=True) doc.init_app(app, title=app.config.get('APP_NAME'), version=__version__)
@app.route('/check', methods=['GET', 'POST']) def hello_world(): api = ApiAuth.query.filter_by(access_key='123').first() print(api) return str(api) def echo(): print(1) app.config.from_object(config) app.app_context().push() ApiDoc(app) db.init_app(app) # 预读数据到缓存中 ScanEthereumChain.read_address() ScanEthereumChain.read_coins() scheduler = APScheduler() scheduler.init_app(app) scheduler_lock = ProcessLock(scheduler.start, filename='wallet-manage-scheduler.lock') scheduler_lock.lock_run() if __name__ == '__main__': app.run(port=config.PORT)
# Using CDN # app.config["API_DOC_CDN"] = True # Disable document pages # app.config["API_DOC_ENABLE"] = False # Methods allowed to be displayed # app.config["API_DOC_METHODS_LIST"] = ["GET", "POST", "PUT", "DELETE", "PATCH"] # Custom url_prefix # app.config["API_DOC_URL_PREFIX"] = "/docs/api" # RESTful Api documents to be excluded # app.config["API_DOC_RESTFUL_EXCLUDE"] = ["todolist"] ApiDoc(app, title="Sample App Restful Methodview", version="1.0.0") class TodoList(MethodView): """Manage todolist""" def put(self): """Change the data""" return jsonify({"todos": "put todolist"}) def delete(self): """Delete the data""" return jsonify({"todos": "delete todolist"})