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
OPTIONS
endpoints 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
vary
header
http_all_methods
#
- Type:
bool
- Default:
True
- Description: Adds the HTTP
CONNECT
andTRACE
methods as allowable
http_auto_head
#
- Type:
bool
- Default:
True
- Description: Automatically adds
HEAD
handlers to anyGET
routes
http_auto_options
#
- Type:
bool
- Default:
True
- Description: Automatically adds
OPTIONS
handlers to any routes without
http_auto_trace
#
- Type:
bool
- Default:
False
- Description: Automatically adds
TRACE
handlers 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 addHEAD
endpoints into the OpenAPI specification
oas_ignore_options
#
- Type:
bool
- Default:
True
- Description: WHen
True
, it will not addOPTIONS
endpoints 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_prefix
endpoint; whenNone
there 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_async
on 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
TRACE
requests