Configuration
Sanic Extensions can be configured in all of the same ways that you can configure Sanic. That makes configuring Sanic Extensions very easy.
app = Sanic("MyApp")
app.config.OAS_URL_PREFIX = "/apidocs"
However, there are a few more configuration options that should be considered.
Manual extend#
Even though Sanic Extensions will automatically attach to your application, you can manually choose extend. When you do that, you can pass all of the configuration values as a keyword arguments (lowercase).
app = Sanic("MyApp")
app.extend(oas_url_prefix="/apidocs")
Or, alternatively they could be passed all at once as a single dict.
app = Sanic("MyApp")
app.extend(config={"oas_url_prefix": "/apidocs"})
Both of these solutions suffers from the fact that the names of the configuration settings are not discoverable by an IDE. Therefore, there is also a type annotated object that you can use. This should help the development experience.
from sanic_ext import Config
app = Sanic("MyApp")
app.extend(config=Config(oas_url_prefix="/apidocs"))
Settings#
Note
Often, the easiest way to change these for an application (since they likely are not going to change dependent upon an environment), is to set them directly on the app.config object.
Simply use the capitalized version of the configuration key as shown here:
app = Sanic("MyApp")
app.config.OAS_URL_PREFIX = "/apidocs"
cors#
- Type:
bool - Default:
True - Description: Whether to enable CORS protection
cors_allow_headers#
- Type:
str - Default:
"*" - Description: Value of the header:
access-control-allow-headers
cors_always_send#
- Type:
bool - Default:
True - Description: Whether to always send the header:
access-control-allow-origin
cors_automatic_options#
- Type:
bool - Default:
True - Description: Whether to automatically generate
OPTIONSendpoints for routes that do not already have one defined
cors_expose_headers#
- Type:
str - Default:
"" - Description: Value of the header:
access-control-expose-headers
cors_max_age#
- Type:
int - Default:
5 - Description: Value of the header:
access-control-max-age
cors_methods#
- Type:
str - Default:
"" - Description: Value of the header:
access-control-access-control-allow-methods
cors_origins#
- Type:
str - Default:
"" - Description: Value of the header:
access-control-allow-origin
Warning
Be very careful if you place * here. Do not do this unless you know what you are doing as it can be a security issue.
cors_send_wildcard#
- Type:
bool - Default:
False - Description: Whether to send a wildcard origin instead of the incoming request origin
cors_supports_credentials#
- Type:
bool - Default:
False - Description: Value of the header:
access-control-allow-credentials
cors_vary_header#
- Type:
bool - Default:
True - Description: Whether to add the
varyheader
http_all_methods#
- Type:
bool - Default:
True - Description: Adds the HTTP
CONNECTandTRACEmethods as allowable
http_auto_head#
- Type:
bool - Default:
True - Description: Automatically adds
HEADhandlers to anyGETroutes
http_auto_options#
- Type:
bool - Default:
True - Description: Automatically adds
OPTIONShandlers to any routes without
http_auto_trace#
- Type:
bool - Default:
False - Description: Automatically adds
TRACEhandlers to any routes without
oas#
- Type:
bool - Default:
True - Description: Whether to enable OpenAPI specification generation
oas_autodoc#
- Type:
bool - Default:
True - Description: Whether to automatically extract OpenAPI details from the docstring of a route function
oas_ignore_head#
- Type:
bool - Default:
True - Description: WHen
True, it will not addHEADendpoints into the OpenAPI specification
oas_ignore_options#
- Type:
bool - Default:
True - Description: WHen
True, it will not addOPTIONSendpoints into the OpenAPI specification
oas_path_to_redoc_html#
- Type:
Optional[str] - Default:
None - Description: Path to HTML file to override the existing Redoc HTML
oas_path_to_swagger_html#
- Type:
Optional[str] - Default:
None - Description: Path to HTML file to override the existing Swagger HTML
oas_ui_default#
- Type:
Optional[str] - Default:
"redoc" - Description: Which OAS documentation to serve on the bare
oas_url_prefixendpoint; whenNonethere will be no documentation at that location
oas_ui_redoc#
- Type:
bool - Default:
True - Description: Whether to enable the Redoc UI
oas_ui_swagger#
- Type:
bool - Default:
True - Description: Whether to enable the Swagger UI
oas_ui_swagger_version#
- Type:
str - Default:
"4.1.0" - Description: Which Swagger version to use
oas_uri_to_config#
- Type:
str - Default:
"/swagger-config" - Description: Path to serve the Swagger configuration
oas_uri_to_json#
- Type:
str - Default:
"/openapi.json" - Description: Path to serve the OpenAPI JSON
oas_uri_to_redoc#
- Type:
str - Default:
"/redoc" - Description: Path to Redoc
oas_uri_to_swagger#
- Type:
str - Default:
"/swagger" - Description: Path to Swagger
oas_url_prefix#
- Type:
str - Default:
"/docs" - Description: URL prefix for the Blueprint that all of the OAS documentation witll attach to
swagger_ui_configuration#
- Type:
Dict[str, Any] - Default:
{"apisSorter": "alpha", "operationsSorter": "alpha", "docExpansion": "full"} - Description: The Swagger documentation to be served to the frontend
templating_enable_async#
- Type:
bool - Default:
True - Description: Whether to set
enable_asyncon the JinjaEnvironment
templating_path_to_templates#
- Type:
Union[str, os.PathLike, Sequence[Union[str, os.PathLike]]] - Default:
templates - Description: A single path, or multiple paths to where your template files are located
trace_excluded_headers#
- Type:
Sequence[str] - Default:
("authorization", "cookie") - Description: Which headers should be suppresed from responses to
TRACErequests