Flaskel是用於與REST API的所有類型的燒瓶應用程序的骨架。
flaskel init --helpflaskel.builder.AppBuilderflaskel.tester進行測試flaskel.http 擴展名通過AppBuilder註冊,請參見: flaskel.scripts.skeleton.ext
第三方擴展:
我自己的外部擴展:
內部擴展:
flaskel.ext.crypto.argon.Argon2 (argon2)flaskel.ext.datetime.FlaskDateHelper (date_helper)flaskel.ext.ipban.FlaskIPBan (ipban)flaskel.ext.redis.FlaskRedis (redis)flaskel.ext.useragent.UserAgent (useragent)flaskel.ext.redis.FlaskRedis (redis)flaskel.ext.sendmail.ClientMail (client_mail)擴展了瓶郵件flaskel.ext.jobs.APJobs (調度程序)擴展了燒瓶 - appchedulerflaskel.ext.mongo.FlaskMongoDB (mongo)擴展了燒瓶-pymongoflaskel.ext.healthcheck.health.HealthCheck (HealthCheck),默認檢查:Glances,Mongo,Redis,Sqlalchemy,System,System,Services(HTTP API)包裝器擴展:
flaskel.ext.caching.Cache包裹燒瓶flaskel.ext.limit.RateLimit包裹燒瓶限制器flaskel.ext.auth.DBTokenHandler ,flaskel.ext.auth.redistokenhandler包裹燒瓶-JWT額外的擴展:
flaskel.extra.mobile_support.MobileVersionCompatibility (Mobile_version)flaskel.extra.stripe.PaymentHandler (條紋) 燒瓶具有大多數常見API或簡單Web控制器的有用視圖:
flaskel.views.base.BaseViewflaskel.views.rpc.JSONRPCViewflaskel.views.template.RenderTemplateflaskel.views.template.RenderTemplateStringflaskel.views.base.Resourceflaskel.views.resource.CatalogResourceflaskel.views.resource.Restfulflaskel.views.resource.PatchApiViewflaskel.views.proxy.ProxyViewflaskel.views.proxy.ConfProxyViewflaskel.views.proxy.TransparentProxyViewflaskel.views.proxy.JsonRPCProxyflaskel.views.proxy.SchemaProxyViewflaskel.views.static.StaticFileViewflaskel.views.static.SPAViewflaskel.views.token.BaseTokenAuth額外的視圖:
flaskel.extra.apidoc.ApiDocTemplateflaskel.extra.apidoc.ApiSpecTemplateflaskel.extra.media.ApiMediaflaskel.extra.media.GetMediaflaskel.extra.mobile_support.MobileReleaseViewFlaskel配備了Sqlalchemy的輔助組件:
flaskel schema --help class SQLAModel ( Model ):
def columns ( self ): ...
def get_one ( cls , raise_not_found = True , to_dict = True , * args , ** kwargs ): ...
def get_list ( cls , to_dict = True , restricted = False , order_by = None , page = None , page_size = None , max_per_page = None , * args , ** kwargs ): ...
def query_collection ( cls , params = None , * args , ** kwargs ): ...
def update ( self , attributes ): ... class ConfigProxy : ...
class ExtProxy : ... from flaskel import webargs
@ webargs . query (...)
...
@ webargs . payload (...)
...
@ webargs . query_paginate ()
...
webargs . paginate ()
webargs . Field . integer ()
webargs . Field . string ()
webargs . Field . decimal ()
webargs . Field . boolean ()
webargs . Field . positive ()
webargs . Field . not_negative ()
webargs . Field . not_positive ()
webargs . Field . negative ()
webargs . Field . isodate ()
webargs . Field . list_of ()
webargs . OptField . integer ()
webargs . OptField . string ()
webargs . OptField . decimal ()
webargs . OptField . boolean ()
webargs . OptField . positive ()
webargs . OptField . not_negative ()
webargs . OptField . not_positive ()
webargs . OptField . negative ()
webargs . OptField . isodate ()
webargs . OptField . list_of ()
webargs . ReqField . integer ()
webargs . ReqField . string ()
webargs . ReqField . decimal ()
webargs . ReqField . boolean ()
webargs . ReqField . positive ()
webargs . ReqField . not_negative ()
webargs . ReqField . not_positive ()
webargs . ReqField . negative ()
webargs . ReqField . isodate ()
webargs . ReqField . list_of () class PayloadValidator :
schemas = SCHEMAS
validator = JSONSchema
@ classmethod
def validate ( cls , schema , strict = True ): ...許多來源提供了許多配置鍵,不同源中的相同鍵被覆蓋。來源優先級(低到高):
APP_CONFIG_FILEpython-decouple處理,因此可以存儲在.env或settings.ini文件中通過Env配置:
DEBUG :(默認值:bool = true)TESTING :(默認值:bool = debug)APP_NAME :(默認值= flaskel)APP_HOST :(默認值= 127.0.0.1)APP_PORT :(默認值:int = 5000)FLASK_APP :( default = app:app)SERVER_NAME :( default = app_host:app_port)FLASK_ENV :(默認=開發)LOCALE :(默認=“ en_en.utf8”)JWT_ALGORITHM :( Default =“ HS512”)JWT_ACCESS_TOKEN_EXPIRES :(默認值:1天)JWT_REFRESH_TOKEN_EXPIRES :(默認值:14天)TEMPLATES_AUTO_RELOAD :(默認值:bool = debug)EXPLAIN_TEMPLATE_LOADING :(默認值:bool = false)SEND_FILE_MAX_AGE_DEFAULT :(默認值:1天)APIDOCS_ENABLED :(默認:bool = true)CONF_PATH :(默認= flaskel/scripts/skeleton/res)SQLALCHEMY_DATABASE_URI :( default = sqlite:///db.sqlite)REDIS_URL :(默認= mongodb:// localhost)REDIS_CONN_TIMEOUT :(默認值:float = 0.05)MONGO_URI :(默認= redis://127.0.0.1:6379)MONGO_CONN_TIMEOUT_MS :(默認值:int = 100)MONGO_SERVER_SELECTION_TIMEOUT_MS :(默認值:int = 100)BASIC_AUTH_USERNAME :(默認= admin)BASIC_AUTH_PASSWORD :(默認= admin)ADMIN_EMAIL :(默認= admin)ADMIN_PASSWORD :(默認= admin)MAIL_DEBUG :(默認值:bool = debug)MAIL_SERVER :(默認= sendria.local)MAIL_PORT :(默認值:int = 62000)MAIL_USERNAME :(默認值:“”)MAIL_PASSWORD :(默認值:“”)MAIL_USE_SSL :(默認值:bool = false)MAIL_USE_TLS :(默認值:bool = false)MAIL_DEFAULT_SENDER :(默認= [email protected])MAIL_DEFAULT_RECEIVER :(默認= [email protected])MAIL_RECIPIENT :(默認值:[email protected])MAIL_TIMEOUT :(默認值:int = 60)PREFERRED_URL_SCHEME :( default = http如果flask_env =開發else https)LOG_BUILDER :(默認=文本)LOG_APP_NAME :(默認= app_name)LOG_LOGGER_NAME :( default = flask_env)LOG_REQ_SKIP_DUMP :(默認值=不測試)LOG_RESP_SKIP_DUMP :(默認值=不測試)LOG_RESP_HEADERS :(默認= [])LOG_REQ_HEADERS :(默認= [])CF_STRICT_ACCESS :(默認= false)VERSION_STORE_MAX :(默認= 6)VERSION_CACHE_EXPIRE :(默認值= 60)HTTP_PROTECT_BODY :( default = false)HTTP_DUMP_REQ_BODY :(默認= false)HTTP_DUMP_RESP_BODY :(默認= false)HTTP_SSL_VERIFY :( default = true)HTTP_TIMEOUT :(默認= 10)USE_X_SENDFILE :(默認=不調試)ENABLE_ACCEL :(默認= true)WSGI_WERKZEUG_LINT_ENABLED :(默認= testing)WSGI_WERKZEUG_PROFILER_ENABLED :(默認= testing)WSGI_WERKZEUG_PROFILER_FILE :( default =“ profiler.txt”)WSGI_WERKZEUG_PROFILER_RESTRICTION : *(默認:list = [0.1])SQLALCHEMY_ECHO :(默認=測試)JSONRPC_BATCH_MAX_REQUEST :(默認= 10)IPBAN_ENABLED :( default = true)IPBAN_KEY_PREFIX :(默認= app_name)IPBAN_KEY_SEP :(默認= /)IPBAN_BACKEND :(默認= local)IPBAN_BACKEND_OPTS :(默認= {})IPBAN_COUNT :(默認值= 5)IPBAN_SECONDS :(默認值= 3600)IPBAN_NET_WHITELIST :(默認值= 127.0.0.0/8)IPBAN_IP_WHITELIST :(默認值= 127.0.0.1)IPBAN_STATUS_CODE :(默認值= 403)IPBAN_CHECK_CODES :(默認值= 404,405,501)RATELIMIT_ENABLED :( default = not debug)RATELIMIT_HEADERS_ENABLED :( default = true)RATELIMIT_IN_MEMORY_FALLBACK_ENABLED :( default = true)RATELIMIT_STORAGE_URL :(默認= redis_url)RATELIMIT_KEY_PREFIX :( default = app_name)SCHEDULER_AUTO_START :( default = true)SCHEDULER_API_ENABLED :(默認= false)CACHE_KEY_PREFIX :( default = app_name)CACHE_REDIS_URL :(默認= redis_url)CACHE_DEFAULT_TIMEOUT :(默認值= 1小時)CACHE_DISABLED :(默認= false)靜態應用程序配置:
ERROR_PAGE :( default =“ core/error.html”)DATABASE_URL :(默認= sqlalchemy_database_uri)SECRET_KEY_MIN_LENGTH :(默認值:int = 256)PRETTY_DATE :( default =“%d%b%y%i:%m%p”)DATE_ISO_FORMAT :( default =“%y-%m-%dt%h:%m:%s”)JWT_DEFAULT_SCOPE :( default = none)JWT_DEFAULT_TOKEN_TYPE :(默認值=“ bearer”)JWT_TOKEN_LOCATION :( default = [“ headers”,“ query_string”])HTTP_DUMP_BODY :(默認值:[false,false])ACCEL_BUFFERING :(默認= true)ACCEL_CHARSET :(默認=“ utf-8”)ACCEL_LIMIT_RATE :(默認值=“ off”)RB_DEFAULT_ACCEPTABLE_MIMETYPES :( default = [“ application/json”,“ application/xml”])REQUEST_ID_HEADER :( default =“ x-request-id”)CACHE_TYPE :( default =“ flask_caching.backends.redis”)CACHE_OPTIONS :( dict)CORS_EXPOSE_HEADERS :(列表)RATELIMIT_STORAGE_OPTIONS :( dict)SCHEDULER_JOBSTORES :( dict)SCHEDULER_EXECUTORS :( dict)SCHEDULER_JOB_DEFAULTS :( dict)LIMITER :( dict)FAIL :(默認值=“ 1/秒”)FAST :(默認值=“ 30/minune”)MEDIUM :(默認值=“ 20/分鐘”)SLOW :(默認值=“ 10/分鐘”)BYPASS_KEY :( default =“ x-limiter-bypass”)BYPASS_VALUE :( default =“ bypass-rate-limit”)額外的配置可選通過文件夾中的文件加載: CONF_PATH :
APISPEC :( Swagger.yaml)SCHEMAS :( schemas.yaml)SCHEDULER_JOBS :( Scheduler.yaml)LOGGING :( log.yaml)如果缺少,默認flaskel.utils.logger:LOGGING特定於內部擴展的配置:
flaskel.ext.crypto.argon.argon2
ARGON2_ENCODING :( default = utf-8)ARGON2_TIME_COST :(默認= 3)ARGON2_HASH_LEN :(默認= 32)ARGON2_PARALLELISM :(默認值= 4)ARGON2_SALT_LEN :(默認= 16)ARGON2_MEMORY_COST :(默認值= 65536) 64 MIBARGON2_PROFILE :(默認值=低)允許低|高flaskel.ext.HealthCheck.Health.HealthCheck
HEALTHCHECK_ABOUT_LINK :(默認=無)HEALTHCHECK_VIEW_NAME :(默認= HealthCheck)HEALTHCHECK_PATH :(默認= /healthcheck)HEALTHCHECK_PARAM_KEY :(默認=檢查)HEALTHCHECK_PARAM_SEP :(默認= +)HEALTHCHECK_CONTENT_TYPE :(默認= application/health+json)flaskel.ext.dateTime.flaskDateHelper
DATE_HELPER_COUNTRY :(默認= it)DATE_HELPER_PROV :(默認= none)DATE_HELPER_STATE :(默認= none)DATE_ISO_FORMAT :( default =“%y-%m-%dt%h:%m:%s”)DATE_PRETTY :( default =“%d%b%y%i:%m%p”)flaskel.ext.jobs.apjobs
SCHEDULER_AUTO_START :( default = false)SCHEDULER_PATCH_MULTITHREAD :( default = true)SCHEDULER_LOCK_FILE :(默認= .scheduler.lock)flaskel.ext.ipban.flaskipban
IPBAN_ENABLED :( default = true)IPBAN_KEY_PREFIX :(默認= app_name)IPBAN_KEY_SEP :(默認= /)IPBAN_BACKEND :(默認= local)IPBAN_BACKEND_OPTS :(默認= {})IPBAN_COUNT :(默認值= 5)IPBAN_SECONDS :(默認值= 3600)IPBAN_NET_WHITELIST :(默認值= 127.0.0.0/8)IPBAN_IP_WHITELIST :(默認值= 127.0.0.1)IPBAN_STATUS_CODE :(默認值= 403)IPBAN_CHECK_CODES :(默認值= 404,405,501)flaskel.ext.caching.caching
CACHE_TYPE :( default =“ flask_caching.backends.redis”)CACHE_REDIS_URL :(默認= redis_url)CACHE_DEFAULT_TIMEOUT :( default = seconds.hour)CACHE_KEY_PREFIX :( default = app_name)CACHE_OPTIONS :( dict)傳遞給redis客戶端實例flaskel.ext.redis.flaskredis
REDIS_URL :(默認= redis:// localhost:6379/0)REDIS_OPTS :( dict)傳遞給redis客戶端實例flaskel.ext.mongo.flaskmongodb
MONGO_URI :(默認= mongodb:// localhost)MONGO_OPTS :( dict)傳遞給mongodb客戶端實例flaskel.ext.useragent.useragent
USER_AGENT_AUTO_PARSE :(默認= false)flaskel.extra.stripe.paymenthandler(條紋)
STRIPE_SECRET_KEY :STRIPE_PUBLIC_KEY :STRIPE_WEBHOOK_SECRET :STRIPE_DEBUG :(默認= false)STRIPE_DEFAULT_CURRENCY :(默認= eur)STRIPE_API_VERSION :(默認值= 2020-08-27)flaskel.extra.mobile_support.mobileversionCompatibility(Mobile_version)
VERSION_STORE_MAX :(默認= 6)VERSION_CACHE_EXPIRE :(默認值= 3600)VERSION_CHECK_ENABLED :(默認= true)VERSION_AGENT_HEADER :(默認= x-agent)VERSION_API_HEADER :( default = x-api version)VERSION_STORE_KEY :(默認= x_upgrade_needed)VERSION_HEADER_KEY :(默認= x-mobile-version)VERSION_UPGRADE_HEADER :(默認值= x-upgrade-needed)VERSION_AGENTS :( default =(android,ios))VERSION_SKIP_STATUSES :( default =(forbidden,not_found,method_not_lowered,too_many_requests))))))flaskel.extra.notification.notificationHandler
FCM_API_KEY :如果使用的話flaskel.extra.media.service.mediaservice
MEDIA : (dict)ALLOWED_EXTENSIONS :(默認值:[PNG,JPG])UPLOAD_FOLDER :EXTERNAL_URL :