diff --git a/docs/src/custom_response/tutorial001.py b/docs/src/custom_response/tutorial001.py index bba3f342d..53e784fcc 100644 --- a/docs/src/custom_response/tutorial001.py +++ b/docs/src/custom_response/tutorial001.py @@ -4,6 +4,6 @@ from starlette.responses import UJSONResponse app = FastAPI() -@app.get("/items/", content_type=UJSONResponse) +@app.get("/items/", response_class=UJSONResponse) async def read_items(): return [{"item_id": "Foo"}] diff --git a/docs/src/custom_response/tutorial002.py b/docs/src/custom_response/tutorial002.py index 214e64263..d4375c338 100644 --- a/docs/src/custom_response/tutorial002.py +++ b/docs/src/custom_response/tutorial002.py @@ -4,7 +4,7 @@ from starlette.responses import HTMLResponse app = FastAPI() -@app.get("/items/", content_type=HTMLResponse) +@app.get("/items/", response_class=HTMLResponse) async def read_items(): return """ diff --git a/docs/src/custom_response/tutorial004.py b/docs/src/custom_response/tutorial004.py index b19783c05..e2248773e 100644 --- a/docs/src/custom_response/tutorial004.py +++ b/docs/src/custom_response/tutorial004.py @@ -18,6 +18,6 @@ def generate_html_response(): return HTMLResponse(content=html_content, status_code=200) -@app.get("/items/", content_type=HTMLResponse) +@app.get("/items/", response_class=HTMLResponse) async def read_items(): return generate_html_response() diff --git a/fastapi/applications.py b/fastapi/applications.py index b8387babd..076ebfcc6 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -119,7 +119,7 @@ class FastAPI(Starlette): methods: List[str] = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> None: self.router.add_api_route( @@ -136,7 +136,7 @@ class FastAPI(Starlette): methods=methods, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -155,7 +155,7 @@ class FastAPI(Starlette): methods: List[str] = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: def decorator(func: Callable) -> Callable: @@ -173,7 +173,7 @@ class FastAPI(Starlette): methods=methods, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) return func @@ -206,7 +206,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.get( @@ -221,7 +221,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -239,7 +239,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.put( @@ -254,7 +254,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -272,7 +272,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.post( @@ -287,7 +287,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -305,7 +305,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.delete( @@ -320,7 +320,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -338,7 +338,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.options( @@ -353,7 +353,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -371,7 +371,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.head( @@ -386,7 +386,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -404,7 +404,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.patch( @@ -419,7 +419,7 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -437,7 +437,7 @@ class FastAPI(Starlette): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.router.trace( @@ -452,6 +452,6 @@ class FastAPI(Starlette): deprecated=deprecated, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) diff --git a/fastapi/openapi/utils.py b/fastapi/openapi/utils.py index 5c4f0884b..760f879b8 100644 --- a/fastapi/openapi/utils.py +++ b/fastapi/openapi/utils.py @@ -197,7 +197,7 @@ def get_openapi_path( ] = response status_code = str(route.status_code) response_schema = {"type": "string"} - if lenient_issubclass(route.content_type, JSONResponse): + if lenient_issubclass(route.response_class, JSONResponse): if route.response_field: response_schema, _ = field_schema( route.response_field, @@ -211,7 +211,7 @@ def get_openapi_path( ] = route.response_description operation.setdefault("responses", {}).setdefault( status_code, {} - ).setdefault("content", {}).setdefault(route.content_type.media_type, {})[ + ).setdefault("content", {}).setdefault(route.response_class.media_type, {})[ "schema" ] = response_schema if all_route_params or route.body_field: diff --git a/fastapi/routing.py b/fastapi/routing.py index 4fe622c02..8f8541c3d 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -40,7 +40,7 @@ def get_app( dependant: Dependant, body_field: Field = None, status_code: int = 200, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, response_field: Field = None, ) -> Callable: assert dependant.call is not None, "dependant.call must me a function" @@ -83,7 +83,7 @@ def get_app( response_data = serialize_response( field=response_field, response=raw_response ) - return content_type( + return response_class( content=response_data, status_code=status_code, background=background_tasks, @@ -110,7 +110,7 @@ class APIRoute(routing.Route): methods: List[str] = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, ) -> None: assert path.startswith("/"), "Routed paths must always start with '/'" self.path = path @@ -119,7 +119,7 @@ class APIRoute(routing.Route): self.response_model = response_model if self.response_model: assert lenient_issubclass( - content_type, JSONResponse + response_class, JSONResponse ), "To declare a type the response must be a JSON response" response_name = "Response_" + self.name self.response_field: Optional[Field] = Field( @@ -168,7 +168,7 @@ class APIRoute(routing.Route): self.methods = methods self.operation_id = operation_id self.include_in_schema = include_in_schema - self.content_type = content_type + self.response_class = response_class self.path_regex, self.path_format, self.param_convertors = compile_path(path) assert inspect.isfunction(endpoint) or inspect.ismethod( @@ -181,7 +181,7 @@ class APIRoute(routing.Route): dependant=self.dependant, body_field=self.body_field, status_code=self.status_code, - content_type=self.content_type, + response_class=self.response_class, response_field=self.response_field, ) ) @@ -204,7 +204,7 @@ class APIRouter(routing.Router): methods: List[str] = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> None: route = APIRoute( @@ -221,7 +221,7 @@ class APIRouter(routing.Router): methods=methods, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) self.routes.append(route) @@ -241,7 +241,7 @@ class APIRouter(routing.Router): methods: List[str] = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: def decorator(func: Callable) -> Callable: @@ -259,7 +259,7 @@ class APIRouter(routing.Router): methods=methods, operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) return func @@ -298,7 +298,7 @@ class APIRouter(routing.Router): methods=route.methods, operation_id=route.operation_id, include_in_schema=route.include_in_schema, - content_type=route.content_type, + response_class=route.response_class, name=route.name, ) elif isinstance(route, routing.Route): @@ -328,7 +328,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -344,7 +344,7 @@ class APIRouter(routing.Router): methods=["GET"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -362,7 +362,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -378,7 +378,7 @@ class APIRouter(routing.Router): methods=["PUT"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -396,7 +396,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -412,7 +412,7 @@ class APIRouter(routing.Router): methods=["POST"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -430,7 +430,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -446,7 +446,7 @@ class APIRouter(routing.Router): methods=["DELETE"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -464,7 +464,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -480,7 +480,7 @@ class APIRouter(routing.Router): methods=["OPTIONS"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -498,7 +498,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -514,7 +514,7 @@ class APIRouter(routing.Router): methods=["HEAD"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -532,7 +532,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -548,7 +548,7 @@ class APIRouter(routing.Router): methods=["PATCH"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, ) @@ -566,7 +566,7 @@ class APIRouter(routing.Router): deprecated: bool = None, operation_id: str = None, include_in_schema: bool = True, - content_type: Type[Response] = JSONResponse, + response_class: Type[Response] = JSONResponse, name: str = None, ) -> Callable: return self.api_route( @@ -582,6 +582,6 @@ class APIRouter(routing.Router): methods=["TRACE"], operation_id=operation_id, include_in_schema=include_in_schema, - content_type=content_type, + response_class=response_class, name=name, )