8000 Add skip_defaults support for path operations (for #242) by wshayes · Pull Request #248 · fastapi/fastapi · GitHub
[go: up one dir, main page]

Skip to content
Prev Previous commit
Next Next commit
⏪ Revert removing Swagger UI OAuth2 redirect and rename param
  • Loading branch information
tiangolo committed May 25, 2019
commit 4ab11fe842461dca84fa621058ac17647fa6e8df
63 changes: 41 additions & 22 deletions fastapi/applications.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
from typing import Any, Callable, Dict, List, Optional, Type, Union

from fastapi import routing
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
from fastapi.openapi.docs import (
get_redoc_html,
get_swagger_ui_html,
get_swagger_ui_oauth2_redirect_html,
)
from fastapi.openapi.utils import get_openapi
from fastapi.params import Depends
from pydantic import BaseModel
Expand Down Expand Up @@ -36,6 +40,7 @@ def __init__(
openapi_prefix: str = "",
docs_url: Optional[str] = "/docs",
redoc_url: Optional[str] = "/redoc",
swagger_ui_oauth2_redirect_url: Optional[str] = "/docs/oauth2-redirect",
**extra: Dict[str, Any],
) -> None:
self._debug = debug
Expand All @@ -52,6 +57,7 @@ def __init__(
self.openapi_prefix = openapi_prefix.rstrip("/")
self.docs_url = docs_url
self.redoc_url = redoc_url
self.swagger_ui_oauth2_redirect_url = swagger_ui_oauth2_redirect_url
self.extra = extra

self.openapi_version = "3.0.2"
Expand Down Expand Up @@ -89,10 +95,23 @@ async def openapi(req: Request) -> JSONResponse:

async def swagger_ui_html(req: Request) -> HTMLResponse:
return get_swagger_ui_html(
openapi_url=openapi_url, title=self.title + " - Swagger UI"
openapi_url=openapi_url,
title=self.title + " - Swagger UI",
oauth2_redirect_url=self.swagger_ui_oauth2_redirect_url,
)

self.add_route(self.docs_url, swagger_ui_html, include_in_schema=False)

if self.swagger_ui_oauth2_redirect_url:

async def swagger_ui_redirect(req: Request) -> HTMLResponse:
return get_swagger_ui_oauth2_redirect_html()

self.add_route(
self.swagger_ui_oauth2_redirect_url,
swagger_ui_redirect,
include_in_schema=False,
)
if self.openapi_url and self.redoc_url:

async def redoc_html(req: Request) -> HTMLResponse:
Expand All @@ -119,7 +138,7 @@ def add_api_route(
deprecated: bool = None,
methods: List[str] = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -138,7 +157,7 @@ def add_api_route(
deprecated=deprecated,
methods=methods,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -159,7 +178,7 @@ def api_route(
deprecated: bool = None,
methods: List[str] = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -179,7 +198,7 @@ def decorator(func: Callable) -> Callable:
deprecated=deprecated,
methods=methods,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand Down Expand Up @@ -219,7 +238,7 @@ def get(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -236,7 +255,7 @@ def get(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -256,7 +275,7 @@ def put(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -273,7 +292,7 @@ def put(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -293,7 +312,7 @@ def post(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -310,7 +329,7 @@ def post(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -330,7 +349,7 @@ def delete(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -347,7 +366,7 @@ def delete(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -367,7 +386,7 @@ def options(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -384,7 +403,7 @@ def options(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -404,7 +423,7 @@ def head(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -421,7 +440,7 @@ def head(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -441,7 +460,7 @@ def patch(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -458,7 +477,7 @@ def patch(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand All @@ -478,7 +497,7 @@ def trace(
responses: Dict[Union[int, str], Dict[str, Any]] = None,
deprecated: bool = None,
operation_id: str = None,
skip_defaults: bool = False,
response_model_skip_defaults: bool = False,
include_in_schema: bool = True,
response_class: Type[Response] = JSONResponse,
name: str = None,
Expand All @@ -495,7 +514,7 @@ def trace(
responses=responses or {},
deprecated=deprecated,
operation_id=operation_id,
skip_defaults=skip_defaults,
response_model_skip_defaults=response_model_skip_defaults,
include_in_schema=include_in_schema,
response_class=response_class,
name=name,
Expand Down
0