# 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

# 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 and TRACE methods as allowable

# http_auto_head

  • Type: bool
  • Default: True
  • Description: Automatically adds HEAD handlers to any GET 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 add HEAD endpoints into the OpenAPI specification

# oas_ignore_options

  • Type: bool
  • Default: True
  • Description: WHen True, it will not add OPTIONS 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; when None 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 configurtaion

# 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 Jinja Environment

# 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
MIT Licensed
Copyright © 2018-present Sanic Community Organization

~ Made with ❤️ and ☕️ ~