pythonasyncioapiasyncfastapiframeworkjsonjson-schemaopenapiopenapi3pydanticpython-typespython3redocreststarletteswaggerswagger-uiuvicornweb
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.7 KiB
74 lines
2.7 KiB
# Minimal implementation for QUERY method support in FastAPI
|
|
|
|
# This is the method to add to the FastAPI class in applications.py after the post method
|
|
|
|
def query(
|
|
self,
|
|
path: str,
|
|
*,
|
|
response_model: Any = Default(None),
|
|
status_code: Optional[int] = None,
|
|
tags: Optional[List[Union[str, Enum]]] = None,
|
|
dependencies: Optional[Sequence[params.Depends]] = None,
|
|
summary: Optional[str] = None,
|
|
description: Optional[str] = None,
|
|
response_description: str = "Successful Response",
|
|
responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None,
|
|
deprecated: Optional[bool] = None,
|
|
operation_id: Optional[str] = None,
|
|
response_model_include: Optional[IncEx] = None,
|
|
response_model_exclude: Optional[IncEx] = None,
|
|
response_model_by_alias: bool = True,
|
|
response_model_exclude_unset: bool = False,
|
|
response_model_exclude_defaults: bool = False,
|
|
response_model_exclude_none: bool = False,
|
|
include_in_schema: bool = True,
|
|
response_class: Union[Type[Response], DefaultPlaceholder] = Default(JSONResponse),
|
|
name: Optional[str] = None,
|
|
callbacks: Optional[List[BaseRoute]] = None,
|
|
openapi_extra: Optional[Dict[str, Any]] = None,
|
|
generate_unique_id_function: Callable[[routing.APIRoute], str] = Default(generate_unique_id),
|
|
) -> Callable[[DecoratedCallable], DecoratedCallable]:
|
|
"""
|
|
Add a *path operation* using an HTTP QUERY operation.
|
|
|
|
The QUERY method is a safe HTTP method that allows request bodies,
|
|
useful for complex queries that exceed URL length limits.
|
|
|
|
## Example
|
|
|
|
```python
|
|
from fastapi import FastAPI
|
|
|
|
app = FastAPI()
|
|
|
|
@app.query("/search/")
|
|
def search_items(query: SearchQuery):
|
|
return {"results": [...]}
|
|
```
|
|
"""
|
|
return self.router.query(
|
|
path,
|
|
response_model=response_model,
|
|
status_code=status_code,
|
|
tags=tags,
|
|
dependencies=dependencies,
|
|
summary=summary,
|
|
description=description,
|
|
response_description=response_description,
|
|
responses=responses,
|
|
deprecated=deprecated,
|
|
operation_id=operation_id,
|
|
response_model_include=response_model_include,
|
|
response_model_exclude=response_model_exclude,
|
|
response_model_by_alias=response_model_by_alias,
|
|
response_model_exclude_unset=response_model_exclude_unset,
|
|
response_model_exclude_defaults=response_model_exclude_defaults,
|
|
response_model_exclude_none=response_model_exclude_none,
|
|
include_in_schema=include_in_schema,
|
|
response_class=response_class,
|
|
name=name,
|
|
callbacks=callbacks,
|
|
openapi_extra=openapi_extra,
|
|
generate_unique_id_function=generate_unique_id_function,
|
|
)
|
|
|