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 :