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)flask-mailを拡張しますflaskel.ext.jobs.APJobs (スケジューラ)flask-apschedulerを拡張しますflaskel.ext.mongo.FlaskMongoDB (Mongo)はフラスコピモンゴを拡張しますflaskel.ext.healthcheck.health.HealthCheck (HealthCheck)、デフォルトチェック:Glances、Mongo、Redis、Sqlalchemy、System、Services(HTTP API)ラッパー拡張機能:
flaskel.ext.caching.Cacheラップフラスコキャッシングflaskel.ext.limit.RateLimitラップフラスコリミッターflaskel.ext.auth.DBTokenHandler 、flaskel.ext.auth.auth.redistokenhandler flask-jwt追加の拡張機能:
flaskel.extra.mobile_support.MobileVersionCompatibility (mobile_version)flaskel.extra.stripe.PaymentHandler (ストライプ) Flaskelには、最も一般的な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_FILE経由python-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 :( default = "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 :( default = admin)BASIC_AUTH_PASSWORD :( default = admin)ADMIN_EMAIL :( default = admin)ADMIN_PASSWORD :( default = admin)MAIL_DEBUG :(デフォルト:bool = debug)MAIL_SERVER :( default = sendria.local)MAIL_PORT :(デフォルト:int = 62000)MAIL_USERNAME :(デフォルト: "")MAIL_PASSWORD :(デフォルト: "")MAIL_USE_SSL :(デフォルト:bool = false)MAIL_USE_TLS :(デフォルト:bool = false)MAIL_DEFAULT_SENDER :( default = [email protected])MAIL_DEFAULT_RECEIVER :( default = [email protected])MAIL_RECIPIENT :(デフォルト:[email protected])MAIL_TIMEOUT :(デフォルト:int = 60)PREFERRED_URL_SCHEME :( default = http if flask_env = development else https)LOG_BUILDER :( default = text)LOG_APP_NAME :( default = app_name)LOG_LOGGER_NAME :(デフォルト= flask_env)LOG_REQ_SKIP_DUMP :(デフォルト=テストなし)LOG_RESP_SKIP_DUMP :(デフォルト=テストなし)LOG_RESP_HEADERS :( default = [])LOG_REQ_HEADERS :( default = [])CF_STRICT_ACCESS :(デフォルト= false)VERSION_STORE_MAX :(デフォルト= 6)VERSION_CACHE_EXPIRE :(デフォルト= 60)HTTP_PROTECT_BODY :(デフォルト= 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 :(デフォルト=テスト)WSGI_WERKZEUG_PROFILER_ENABLED :(デフォルト=テスト)WSGI_WERKZEUG_PROFILER_FILE :( default = "profiler.txt")WSGI_WERKZEUG_PROFILER_RESTRICTION : *(default:list = [0.1])SQLALCHEMY_ECHO :(デフォルト=テスト)JSONRPC_BATCH_MAX_REQUEST :(デフォルト= 10)IPBAN_ENABLED :(デフォルト= true)IPBAN_KEY_PREFIX :(デフォルト= app_name)IPBAN_KEY_SEP :( default = /)IPBAN_BACKEND :( default = local)IPBAN_BACKEND_OPTS :( default = {})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 :(デフォルト=デバッグではない)RATELIMIT_HEADERS_ENABLED :( default = true)RATELIMIT_IN_MEMORY_FALLBACK_ENABLED :( default = true)RATELIMIT_STORAGE_URL :( default = redis_url)RATELIMIT_KEY_PREFIX :(デフォルト= app_name)SCHEDULER_AUTO_START :( default = true)SCHEDULER_API_ENABLED :( default = false)CACHE_KEY_PREFIX :(デフォルト= app_name)CACHE_REDIS_URL :( default = 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 :(デフォルト=なし)JWT_DEFAULT_TOKEN_TYPE :(デフォルト= "Bearer")JWT_TOKEN_LOCATION :( default = ["headers"、 "query_string"])HTTP_DUMP_BODY :(デフォルト:[false、false])ACCEL_BUFFERING :(デフォルト= true)ACCEL_CHARSET :( default = "utf-8")ACCEL_LIMIT_RATE :( default = "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 :( default = "1/second")FAST :( default = "30/mink")MEDIUM :( default = "20/minut")SLOW :(デフォルト= "10/mink")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 :(デフォルト= utf-8)ARGON2_TIME_COST :(デフォルト= 3)ARGON2_HASH_LEN :(デフォルト= 32)ARGON2_PARALLELISM :(デフォルト= 4)ARGON2_SALT_LEN :(デフォルト= 16)ARGON2_MEMORY_COST :(デフォルト= 65536) 64 MIBARGON2_PROFILE :(デフォルト=低い)低い| highflaskel.ext.healthcheck.health.healthcheck
HEALTHCHECK_ABOUT_LINK :(デフォルト= none)HEALTHCHECK_VIEW_NAME :( default = healthcheck)HEALTHCHECK_PATH :(デフォルト= /HealthCheck)HEALTHCHECK_PARAM_KEY :(デフォルト=チェック)HEALTHCHECK_PARAM_SEP :( default = +)HEALTHCHECK_CONTENT_TYPE :( default = application/health+json)flaskel.ext.datetime.flaskdatehelper
DATE_HELPER_COUNTRY :( default = it)DATE_HELPER_PROV :(デフォルト=なし)DATE_HELPER_STATE :(デフォルト=なし)DATE_ISO_FORMAT :( default = "%y-%m-%dt%h:%m:%s")DATE_PRETTY :(デフォルト= "%d%b%y%i:%m%p")flaskel.ext.jobs.apjobs
SCHEDULER_AUTO_START :( default = false)SCHEDULER_PATCH_MULTITHREAD :( default = true)SCHEDULER_LOCK_FILE :( default = .scheduler.lock)flaskel.ext.ipban.flaskipban
IPBAN_ENABLED :(デフォルト= true)IPBAN_KEY_PREFIX :(デフォルト= app_name)IPBAN_KEY_SEP :( default = /)IPBAN_BACKEND :( default = local)IPBAN_BACKEND_OPTS :( default = {})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 :( default = redis_url)CACHE_DEFAULT_TIMEOUT :(デフォルト= seconds.hour)CACHE_KEY_PREFIX :(デフォルト= app_name)CACHE_OPTIONS :( dict) redis clientインスタンスに渡されましたflaskel.ext.redis.flaskredis
REDIS_URL :(デフォルト= redis:// localhost:6379/0)REDIS_OPTS :( dict) redis clientインスタンスに渡されました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.mobileversioncompativity(mobile_version)
VERSION_STORE_MAX :(デフォルト= 6)VERSION_CACHE_EXPIRE :(デフォルト= 3600)VERSION_CHECK_ENABLED :( default = true)VERSION_AGENT_HEADER :( default = x-agent)VERSION_API_HEADER :( default = x-api-version)VERSION_STORE_KEY :( default = x_upgrade_needed)VERSION_HEADER_KEY :( default = x-mobile-version)VERSION_UPGRADE_HEADER :( default = x-upgrade-needed)VERSION_AGENTS :( default =(android、iOS))VERSION_SKIP_STATUSES :( default =(forbidden、not_found、method_not_allowed、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 :