Browse Source

Merge b215bd7739 into 7b2631a88d

pull/5917/merge
Zakharov Denis 2 weeks ago
committed by GitHub
parent
commit
f7a2d90647
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 5
      fastapi/applications.py
  2. 4
      fastapi/openapi/utils.py
  3. 9
      tests/test_openapi_servers.py

5
fastapi/applications.py

@ -27,6 +27,7 @@ from fastapi.openapi.docs import (
get_swagger_ui_html,
get_swagger_ui_oauth2_redirect_html,
)
from fastapi.openapi.models import Server
from fastapi.openapi.utils import get_openapi
from fastapi.params import Depends
from fastapi.types import DecoratedCallable, IncEx
@ -286,7 +287,7 @@ class FastAPI(Starlette):
),
] = None,
servers: Annotated[
Optional[List[Dict[str, Union[str, Any]]]],
Optional[List[Union[Dict[str, Union[str, Any]], Server]]],
Doc(
"""
A `list` of `dict`s with connectivity information to a target server.
@ -997,7 +998,7 @@ class FastAPI(Starlette):
def setup(self) -> None:
if self.openapi_url:
urls = (server_data.get("url") for server_data in self.servers)
urls = (dict(server_data).get("url") for server_data in self.servers)
server_urls = {url for url in urls if url}
async def openapi(req: Request) -> JSONResponse:

4
fastapi/openapi/utils.py

@ -23,7 +23,7 @@ from fastapi.dependencies.utils import (
)
from fastapi.encoders import jsonable_encoder
from fastapi.openapi.constants import METHODS_WITH_BODY, REF_PREFIX, REF_TEMPLATE
from fastapi.openapi.models import OpenAPI
from fastapi.openapi.models import OpenAPI, Server
from fastapi.params import Body, ParamTypes
from fastapi.responses import Response
from fastapi.types import ModelNameMap
@ -484,7 +484,7 @@ def get_openapi(
routes: Sequence[BaseRoute],
webhooks: Optional[Sequence[BaseRoute]] = None,
tags: Optional[List[Dict[str, Any]]] = None,
servers: Optional[List[Dict[str, Union[str, Any]]]] = None,
servers: Optional[List[Union[Dict[str, Union[str, Any]], Server]]] = None,
terms_of_service: Optional[str] = None,
contact: Optional[Dict[str, Union[str, Any]]] = None,
license_info: Optional[Dict[str, Union[str, Any]]] = None,

9
tests/test_openapi_servers.py

@ -1,14 +1,15 @@
from dirty_equals import IsOneOf
from fastapi import FastAPI
from fastapi.openapi.models import Server
from fastapi.testclient import TestClient
app = FastAPI(
servers=[
{"url": "/", "description": "Default, relative server"},
{
"url": "http://staging.localhost.tiangolo.com:8000",
"description": "Staging but actually localhost still",
},
Server(
url="http://staging.localhost.tiangolo.com:8000",
description="Staging but actually localhost still",
),
{"url": "https://prod.example.com"},
]
)

Loading…
Cancel
Save