Browse Source

♻️ Rename parameter content_type to response_class (#183)

pull/184/head
Sebastián Ramírez 6 years ago
committed by GitHub
parent
commit
192ebba2a2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      docs/src/custom_response/tutorial001.py
  2. 2
      docs/src/custom_response/tutorial002.py
  3. 2
      docs/src/custom_response/tutorial004.py
  4. 40
      fastapi/applications.py
  5. 4
      fastapi/openapi/utils.py
  6. 54
      fastapi/routing.py

2
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"}]

2
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 """
<html>

2
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()

40
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,
)

4
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:

54
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,
)

Loading…
Cancel
Save