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