APIRouter 类¶
这是 APIRouter 类的参考信息,包含其所有的参数、属性和方法。
你可以直接从 fastapi 中导入 APIRouter 类。
from fastapi import APIRouter
fastapi.APIRouter ¶
APIRouter(
*,
prefix="",
tags=None,
dependencies=None,
default_response_class=Default(JSONResponse),
responses=None,
callbacks=None,
routes=None,
redirect_slashes=True,
default=None,
dependency_overrides_provider=None,
route_class=APIRoute,
on_startup=None,
on_shutdown=None,
lifespan=None,
deprecated=None,
include_in_schema=True,
generate_unique_id_function=Default(generate_unique_id),
strict_content_type=Default(True)
)
基类: Router
APIRouter 类用于对 路径操作 进行分组,例如将应用结构化为多个文件。随后它可以被包含在 FastAPI 应用中,或包含在另一个 APIRouter 中(最终被包含在应用中)。
更多信息请阅读 FastAPI 文档:大型应用 - 多个文件。
示例¶
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.get("/users/", tags=["users"])
async def read_users():
return [{"username": "Rick"}, {"username": "Morty"}]
app.include_router(router)
| 参数 | 描述 |
|---|---|
prefix
|
路由器可选的路径前缀。
类型: |
tags
|
类型: |
dependencies
|
应用于此路由器中所有 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:大型应用 - 多个文件。
类型: |
default_response_class
|
使用的默认响应类。 更多信息请阅读 FastAPI 文档:自定义响应 - HTML、流、文件等。
类型: |
responses
|
在 OpenAPI 中显示的附加响应。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 中的附加响应。 以及 FastAPI 文档:大型应用。 |
callbacks
|
类型: |
routes
|
注意:通常不应使用此参数,它是从 Starlette 继承而来,仅为兼容性提供支持。 用于处理传入 HTTP 和 WebSocket 请求的路由列表。
类型: |
redirect_slashes
|
当客户端不使用相同格式时,是否检测并重定向 URL 中的斜杠。
类型: |
default
|
此路由器的默认函数处理器。用于处理 404 未找到错误。
类型: |
dependency_overrides_provider
|
仅由 FastAPI 内部用于处理依赖项覆盖。 你通常不需要使用它。它通常指向
类型: |
route_class
|
此路由器使用的自定义路由(路径操作)类。 更多信息请阅读 FastAPI 文档:自定义请求和 APIRoute 类。
类型: |
on_startup
|
类型: |
on_shutdown
|
类型: |
lifespan
|
更多信息请阅读 FastAPI 文档:
类型: |
deprecated
|
类型: |
include_in_schema
|
决定是否将此路由器中的所有 路径操作 包含在生成的 OpenAPI 中。 这会影响生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:查询参数和字符串校验。
类型: |
generate_unique_id_function
|
类型: |
strict_content_type
|
为请求 Content-Type 头启用严格检查。 当设置为 这可以防止潜在的跨站请求伪造 (CSRF) 攻击,这些攻击利用浏览器在没有 Content-Type 头的情况下发送请求,从而绕过 CORS 预检检查。特别适用于需要本地运行(在 localhost 中)的应用。 当设置为 更多信息请阅读 FastAPI 文档:严格 Content-Type。
类型: |
源代码位于 fastapi/routing.py
def __init__(
self,
*,
prefix: Annotated[str, Doc("An optional path prefix for the router.")] = "",
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to all the *path operations* in this
router.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to all the
*path operations* in this router.
Read more about it in the
[FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.org.cn/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
"""
),
] = None,
default_response_class: Annotated[
type[Response],
Doc(
"""
The default response class to be used.
Read more in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#default-response-class).
"""
),
] = Default(JSONResponse),
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses to be shown in OpenAPI.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Additional Responses in OpenAPI](https://fastapi.org.cn/advanced/additional-responses/).
And in the
[FastAPI docs for Bigger Applications](https://fastapi.org.cn/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
OpenAPI callbacks that should apply to all *path operations* in this
router.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
routes: Annotated[
list[BaseRoute] | None,
Doc(
"""
**Note**: you probably shouldn't use this parameter, it is inherited
from Starlette and supported for compatibility.
---
A list of routes to serve incoming HTTP and WebSocket requests.
"""
),
deprecated(
"""
You normally wouldn't use this parameter with FastAPI, it is inherited
from Starlette and supported for compatibility.
In FastAPI, you normally would use the *path operation methods*,
like `router.get()`, `router.post()`, etc.
"""
),
] = None,
redirect_slashes: Annotated[
bool,
Doc(
"""
Whether to detect and redirect slashes in URLs when the client doesn't
use the same format.
"""
),
] = True,
default: Annotated[
ASGIApp | None,
Doc(
"""
Default function handler for this router. Used to handle
404 Not Found errors.
"""
),
] = None,
dependency_overrides_provider: Annotated[
Any | None,
Doc(
"""
Only used internally by FastAPI to handle dependency overrides.
You shouldn't need to use it. It normally points to the `FastAPI` app
object.
"""
),
] = None,
route_class: Annotated[
type[APIRoute],
Doc(
"""
Custom route (*path operation*) class to be used by this router.
Read more about it in the
[FastAPI docs for Custom Request and APIRoute class](https://fastapi.org.cn/how-to/custom-request-and-route/#custom-apiroute-class-in-a-router).
"""
),
] = APIRoute,
on_startup: Annotated[
Sequence[Callable[[], Any]] | None,
Doc(
"""
A list of startup event handler functions.
You should instead use the `lifespan` handlers.
Read more in the [FastAPI docs for `lifespan`](https://fastapi.org.cn/advanced/events/).
"""
),
] = None,
on_shutdown: Annotated[
Sequence[Callable[[], Any]] | None,
Doc(
"""
A list of shutdown event handler functions.
You should instead use the `lifespan` handlers.
Read more in the
[FastAPI docs for `lifespan`](https://fastapi.org.cn/advanced/events/).
"""
),
] = None,
# the generic to Lifespan[AppType] is the type of the top level application
# which the router cannot know statically, so we use typing.Any
lifespan: Annotated[
Lifespan[Any] | None,
Doc(
"""
A `Lifespan` context manager handler. This replaces `startup` and
`shutdown` functions with a single context manager.
Read more in the
[FastAPI docs for `lifespan`](https://fastapi.org.cn/advanced/events/).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark all *path operations* in this router as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
include_in_schema: Annotated[
bool,
Doc(
"""
To include (or not) all the *path operations* in this router in the
generated OpenAPI.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
strict_content_type: Annotated[
bool,
Doc(
"""
Enable strict checking for request Content-Type headers.
When `True` (the default), requests with a body that do not include
a `Content-Type` header will **not** be parsed as JSON.
This prevents potential cross-site request forgery (CSRF) attacks
that exploit the browser's ability to send requests without a
Content-Type header, bypassing CORS preflight checks. In particular
applicable for apps that need to be run locally (in localhost).
When `False`, requests without a `Content-Type` header will have
their body parsed as JSON, which maintains compatibility with
certain clients that don't send `Content-Type` headers.
Read more about it in the
[FastAPI docs for Strict Content-Type](https://fastapi.org.cn/advanced/strict-content-type/).
"""
),
] = Default(True),
) -> None:
# Determine the lifespan context to use
if lifespan is None:
# Use the default lifespan that runs on_startup/on_shutdown handlers
lifespan_context: Lifespan[Any] = _DefaultLifespan(self)
elif inspect.isasyncgenfunction(lifespan):
lifespan_context = asynccontextmanager(lifespan)
elif inspect.isgeneratorfunction(lifespan):
lifespan_context = _wrap_gen_lifespan_context(lifespan)
else:
lifespan_context = lifespan
self.lifespan_context = lifespan_context
super().__init__(
routes=routes,
redirect_slashes=redirect_slashes,
default=default,
lifespan=lifespan_context,
)
if prefix:
assert prefix.startswith("/"), "A path prefix must start with '/'"
assert not prefix.endswith("/"), (
"A path prefix must not end with '/', as the routes will start with '/'"
)
# Handle on_startup/on_shutdown locally since Starlette removed support
# Ref: https://github.com/Kludex/starlette/pull/3117
# TODO: deprecate this once the lifespan (or alternative) interface is improved
self.on_startup: list[Callable[[], Any]] = (
[] if on_startup is None else list(on_startup)
)
self.on_shutdown: list[Callable[[], Any]] = (
[] if on_shutdown is None else list(on_shutdown)
)
self.prefix = prefix
self.tags: list[str | Enum] = tags or []
self.dependencies = list(dependencies or [])
self.deprecated = deprecated
self.include_in_schema = include_in_schema
self.responses = responses or {}
self.callbacks = callbacks or []
self.dependency_overrides_provider = dependency_overrides_provider
self.route_class = route_class
self.default_response_class = default_response_class
self.generate_unique_id_function = generate_unique_id_function
self.strict_content_type = strict_content_type
websocket ¶
websocket(path, name=None, *, dependencies=None)
装饰一个 WebSocket 函数。
在 FastAPI 文档的“WebSockets”中了解更多。
示例
示例¶
from fastapi import APIRouter, FastAPI, WebSocket
app = FastAPI()
router = APIRouter()
@router.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"Message text was: {data}")
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
WebSocket 路径。
类型: |
name
|
WebSocket 的名称。仅在内部使用。
类型: |
dependencies
|
用于此 WebSocket 的依赖项列表(使用 在 FastAPI 文档的“WebSockets”中了解更多。
类型: |
源代码位于 fastapi/routing.py
def websocket(
self,
path: Annotated[
str,
Doc(
"""
WebSocket path.
"""
),
],
name: Annotated[
str | None,
Doc(
"""
A name for the WebSocket. Only used internally.
"""
),
] = None,
*,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be used for this
WebSocket.
Read more about it in the
[FastAPI docs for WebSockets](https://fastapi.org.cn/advanced/websockets/).
"""
),
] = None,
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Decorate a WebSocket function.
Read more about it in the
[FastAPI docs for WebSockets](https://fastapi.org.cn/advanced/websockets/).
**Example**
## Example
```python
from fastapi import APIRouter, FastAPI, WebSocket
app = FastAPI()
router = APIRouter()
@router.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await websocket.accept()
while True:
data = await websocket.receive_text()
await websocket.send_text(f"Message text was: {data}")
app.include_router(router)
```
"""
def decorator(func: DecoratedCallable) -> DecoratedCallable:
self.add_api_websocket_route(
path, func, name=name, dependencies=dependencies
)
return func
return decorator
include_router ¶
include_router(
router,
*,
prefix="",
tags=None,
dependencies=None,
default_response_class=Default(JSONResponse),
responses=None,
callbacks=None,
deprecated=None,
include_in_schema=True,
generate_unique_id_function=Default(generate_unique_id)
)
在当前 APIRouter 中包含另一个 APIRouter。
更多信息请阅读 FastAPI 文档:大型应用。
示例¶
from fastapi import APIRouter, FastAPI
app = FastAPI()
internal_router = APIRouter()
users_router = APIRouter()
@users_router.get("/users/")
def read_users():
return [{"name": "Rick"}, {"name": "Morty"}]
internal_router.include_router(users_router)
app.include_router(internal_router)
| 参数 | 描述 |
|---|---|
router
|
要包含的
类型: |
prefix
|
路由器可选的路径前缀。
类型: |
tags
|
类型: |
dependencies
|
应用于此路由器中所有 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:大型应用 - 多个文件。
类型: |
default_response_class
|
使用的默认响应类。 更多信息请阅读 FastAPI 文档:自定义响应 - HTML、流、文件等。
类型: |
responses
|
在 OpenAPI 中显示的附加响应。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 中的附加响应。 以及 FastAPI 文档:大型应用。 |
callbacks
|
类型: |
deprecated
|
类型: |
include_in_schema
|
决定是否将此路由器中的所有 路径操作 包含在生成的 OpenAPI 模式中。 这会影响生成的 OpenAPI (例如在
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def include_router(
self,
router: Annotated["APIRouter", Doc("The `APIRouter` to include.")],
*,
prefix: Annotated[str, Doc("An optional path prefix for the router.")] = "",
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to all the *path operations* in this
router.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to all the
*path operations* in this router.
Read more about it in the
[FastAPI docs for Bigger Applications - Multiple Files](https://fastapi.org.cn/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
"""
),
] = None,
default_response_class: Annotated[
type[Response],
Doc(
"""
The default response class to be used.
Read more in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#default-response-class).
"""
),
] = Default(JSONResponse),
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses to be shown in OpenAPI.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Additional Responses in OpenAPI](https://fastapi.org.cn/advanced/additional-responses/).
And in the
[FastAPI docs for Bigger Applications](https://fastapi.org.cn/tutorial/bigger-applications/#include-an-apirouter-with-a-custom-prefix-tags-responses-and-dependencies).
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
OpenAPI callbacks that should apply to all *path operations* in this
router.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark all *path operations* in this router as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
include_in_schema: Annotated[
bool,
Doc(
"""
Include (or not) all the *path operations* in this router in the
generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = True,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> None:
"""
Include another `APIRouter` in the same current `APIRouter`.
Read more about it in the
[FastAPI docs for Bigger Applications](https://fastapi.org.cn/tutorial/bigger-applications/).
## Example
```python
from fastapi import APIRouter, FastAPI
app = FastAPI()
internal_router = APIRouter()
users_router = APIRouter()
@users_router.get("/users/")
def read_users():
return [{"name": "Rick"}, {"name": "Morty"}]
internal_router.include_router(users_router)
app.include_router(internal_router)
```
"""
assert self is not router, (
"Cannot include the same APIRouter instance into itself. "
"Did you mean to include a different router?"
)
if prefix:
assert prefix.startswith("/"), "A path prefix must start with '/'"
assert not prefix.endswith("/"), (
"A path prefix must not end with '/', as the routes will start with '/'"
)
else:
for r in router.routes:
path = getattr(r, "path") # noqa: B009
name = getattr(r, "name", "unknown")
if path is not None and not path:
raise FastAPIError(
f"Prefix and path cannot be both empty (path operation: {name})"
)
if responses is None:
responses = {}
for route in router.routes:
if isinstance(route, APIRoute):
combined_responses = {**responses, **route.responses}
use_response_class = get_value_or_default(
route.response_class,
router.default_response_class,
default_response_class,
self.default_response_class,
)
current_tags = []
if tags:
current_tags.extend(tags)
if route.tags:
current_tags.extend(route.tags)
current_dependencies: list[params.Depends] = []
if dependencies:
current_dependencies.extend(dependencies)
if route.dependencies:
current_dependencies.extend(route.dependencies)
current_callbacks = []
if callbacks:
current_callbacks.extend(callbacks)
if route.callbacks:
current_callbacks.extend(route.callbacks)
current_generate_unique_id = get_value_or_default(
route.generate_unique_id_function,
router.generate_unique_id_function,
generate_unique_id_function,
self.generate_unique_id_function,
)
self.add_api_route(
prefix + route.path,
route.endpoint,
response_model=route.response_model,
status_code=route.status_code,
tags=current_tags,
dependencies=current_dependencies,
summary=route.summary,
description=route.description,
response_description=route.response_description,
responses=combined_responses,
deprecated=route.deprecated or deprecated or self.deprecated,
methods=route.methods,
operation_id=route.operation_id,
response_model_include=route.response_model_include,
response_model_exclude=route.response_model_exclude,
response_model_by_alias=route.response_model_by_alias,
response_model_exclude_unset=route.response_model_exclude_unset,
response_model_exclude_defaults=route.response_model_exclude_defaults,
response_model_exclude_none=route.response_model_exclude_none,
include_in_schema=route.include_in_schema
and self.include_in_schema
and include_in_schema,
response_class=use_response_class,
name=route.name,
route_class_override=type(route),
callbacks=current_callbacks,
openapi_extra=route.openapi_extra,
generate_unique_id_function=current_generate_unique_id,
strict_content_type=get_value_or_default(
route.strict_content_type,
router.strict_content_type,
self.strict_content_type,
),
)
elif isinstance(route, routing.Route):
methods = list(route.methods or [])
self.add_route(
prefix + route.path,
route.endpoint,
methods=methods,
include_in_schema=route.include_in_schema,
name=route.name,
)
elif isinstance(route, APIWebSocketRoute):
current_dependencies = []
if dependencies:
current_dependencies.extend(dependencies)
if route.dependencies:
current_dependencies.extend(route.dependencies)
self.add_api_websocket_route(
prefix + route.path,
route.endpoint,
dependencies=current_dependencies,
name=route.name,
)
elif isinstance(route, routing.WebSocketRoute):
self.add_websocket_route(
prefix + route.path, route.endpoint, name=route.name
)
for handler in router.on_startup:
self.add_event_handler("startup", handler)
for handler in router.on_shutdown:
self.add_event_handler("shutdown", handler)
self.lifespan_context = _merge_lifespan_context(
self.lifespan_context,
router.lifespan_context,
)
get ¶
get(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP GET 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.get("/items/")
def read_items():
return [{"name": "Empanada"}, {"name": "Arepa"}]
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def get(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP GET operation.
## Example
```python
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.get("/items/")
def read_items():
return [{"name": "Empanada"}, {"name": "Arepa"}]
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["GET"],
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,
)
put ¶
put(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP PUT 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.put("/items/{item_id}")
def replace_item(item_id: str, item: Item):
return {"message": "Item replaced", "id": item_id}
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def put(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP PUT operation.
## Example
```python
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.put("/items/{item_id}")
def replace_item(item_id: str, item: Item):
return {"message": "Item replaced", "id": item_id}
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["PUT"],
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,
)
post ¶
post(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP POST 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.post("/items/")
def create_item(item: Item):
return {"message": "Item created"}
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def post(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP POST operation.
## Example
```python
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.post("/items/")
def create_item(item: Item):
return {"message": "Item created"}
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["POST"],
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,
)
delete ¶
delete(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP DELETE 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.delete("/items/{item_id}")
def delete_item(item_id: str):
return {"message": "Item deleted"}
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def delete(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP DELETE operation.
## Example
```python
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.delete("/items/{item_id}")
def delete_item(item_id: str):
return {"message": "Item deleted"}
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["DELETE"],
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,
)
options ¶
options(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP OPTIONS 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.options("/items/")
def get_item_options():
return {"additions": ["Aji", "Guacamole"]}
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def options(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP OPTIONS operation.
## Example
```python
from fastapi import APIRouter, FastAPI
app = FastAPI()
router = APIRouter()
@router.options("/items/")
def get_item_options():
return {"additions": ["Aji", "Guacamole"]}
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["OPTIONS"],
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,
)
head ¶
head(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP HEAD 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.head("/items/", status_code=204)
def get_items_headers(response: Response):
response.headers["X-Cat-Dog"] = "Alone in the world"
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def head(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP HEAD operation.
## Example
```python
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.head("/items/", status_code=204)
def get_items_headers(response: Response):
response.headers["X-Cat-Dog"] = "Alone in the world"
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["HEAD"],
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,
)
patch ¶
patch(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP PATCH 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.patch("/items/")
def update_item(item: Item):
return {"message": "Item updated in place"}
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def patch(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP PATCH operation.
## Example
```python
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.patch("/items/")
def update_item(item: Item):
return {"message": "Item updated in place"}
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["PATCH"],
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,
)
trace ¶
trace(
path,
*,
response_model=Default(None),
status_code=None,
tags=None,
dependencies=None,
summary=None,
description=None,
response_description="Successful Response",
responses=None,
deprecated=None,
operation_id=None,
response_model_include=None,
response_model_exclude=None,
response_model_by_alias=True,
response_model_exclude_unset=False,
response_model_exclude_defaults=False,
response_model_exclude_none=False,
include_in_schema=True,
response_class=Default(JSONResponse),
name=None,
callbacks=None,
openapi_extra=None,
generate_unique_id_function=Default(generate_unique_id)
)
使用 HTTP TRACE 操作添加一个 路径操作。
示例¶
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.trace("/items/{item_id}")
def trace_item(item_id: str):
return None
app.include_router(router)
| 参数 | 描述 |
|---|---|
path
|
用于此 路径操作 的 URL 路径。 例如,在
类型: |
response_model
|
用于响应的类型。 它可以是任何有效的 Pydantic 字段 类型。因此,它不一定是 Pydantic 模型,也可以是其他类型,例如 它将用于:
更多信息请阅读 FastAPI 文档:响应模型。
类型: |
status_code
|
类型: |
tags
|
类型: |
dependencies
|
应用于此 路径操作 的依赖项列表(使用 更多信息请阅读 FastAPI 文档:路径操作装饰器中的依赖项。
类型: |
summary
|
类型: |
description
|
此 路径操作 的描述。 如果未提供,它将从 路径操作函数 的文档字符串中自动提取。 它可以包含 Markdown。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:路径操作配置。
类型: |
response_description
|
默认响应的描述。 它将被添加到生成的 OpenAPI (例如在
类型: |
responses
|
此 路径操作 可能返回的附加响应。 它将被添加到生成的 OpenAPI (例如在 |
deprecated
|
将此 路径操作 标记为已弃用。 它将被添加到生成的 OpenAPI (例如在
类型: |
operation_id
|
此 路径操作 使用的自定义操作 ID。 默认情况下,它是自动生成的。 如果你提供了自定义操作 ID,请确保它在整个 API 中是唯一的。 你可以使用 更多信息请阅读 FastAPI 文档:如何生成客户端。
类型: |
response_model_include
|
传递给 Pydantic 的配置,仅在响应数据中包含特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude
|
传递给 Pydantic 的配置,在响应数据中排除特定字段。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_by_alias
|
传递给 Pydantic 的配置,用于定义当使用别名时,响应模型是否应按别名序列化。 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_unset
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些未设置且具有默认值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_defaults
|
传递给 Pydantic 的配置,用于定义响应数据是否应包含所有字段,包括那些具有与默认值相同值的字段。这与 当设置为 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
response_model_exclude_none
|
传递给 Pydantic 的配置,用于定义响应数据是否应排除设置为 这比 更多信息请阅读 FastAPI 文档:响应模型 - 返回类型。
类型: |
include_in_schema
|
类型: |
response_class
|
类型: |
name
|
此 路径操作 的名称。仅在内部使用。
类型: |
callbacks
|
将用作 OpenAPI 回调的 路径操作 列表。 这仅用于 OpenAPI 文档,回调不会被直接使用。 它将被添加到生成的 OpenAPI (例如在 更多信息请阅读 FastAPI 文档:OpenAPI 回调。
类型: |
openapi_extra
|
要包含在此 路径操作 的 OpenAPI 模式中的额外元数据。 更多信息请阅读 FastAPI 文档:路径操作高级配置。
类型: |
generate_unique_id_function
|
类型: |
源代码位于 fastapi/routing.py
def trace(
self,
path: Annotated[
str,
Doc(
"""
The URL path to be used for this *path operation*.
For example, in `http://example.com/items`, the path is `/items`.
"""
),
],
*,
response_model: Annotated[
Any,
Doc(
"""
The type to use for the response.
It could be any valid Pydantic *field* type. So, it doesn't have to
be a Pydantic model, it could be other things, like a `list`, `dict`,
etc.
It will be used for:
* Documentation: the generated OpenAPI (and the UI at `/docs`) will
show it as the response (JSON Schema).
* Serialization: you could return an arbitrary object and the
`response_model` would be used to serialize that object into the
corresponding JSON.
* Filtering: the JSON sent to the client will only contain the data
(fields) defined in the `response_model`. If you returned an object
that contains an attribute `password` but the `response_model` does
not include that field, the JSON sent to the client would not have
that `password`.
* Validation: whatever you return will be serialized with the
`response_model`, converting any data as necessary to generate the
corresponding JSON. But if the data in the object returned is not
valid, that would mean a violation of the contract with the client,
so it's an error from the API developer. So, FastAPI will raise an
error and return a 500 error code (Internal Server Error).
Read more about it in the
[FastAPI docs for Response Model](https://fastapi.org.cn/tutorial/response-model/).
"""
),
] = Default(None),
status_code: Annotated[
int | None,
Doc(
"""
The default status code to be used for the response.
You could override the status code by returning a response directly.
Read more about it in the
[FastAPI docs for Response Status Code](https://fastapi.org.cn/tutorial/response-status-code/).
"""
),
] = None,
tags: Annotated[
list[str | Enum] | None,
Doc(
"""
A list of tags to be applied to the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/#tags).
"""
),
] = None,
dependencies: Annotated[
Sequence[params.Depends] | None,
Doc(
"""
A list of dependencies (using `Depends()`) to be applied to the
*path operation*.
Read more about it in the
[FastAPI docs for Dependencies in path operation decorators](https://fastapi.org.cn/tutorial/dependencies/dependencies-in-path-operation-decorators/).
"""
),
] = None,
summary: Annotated[
str | None,
Doc(
"""
A summary for the *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
description: Annotated[
str | None,
Doc(
"""
A description for the *path operation*.
If not provided, it will be extracted automatically from the docstring
of the *path operation function*.
It can contain Markdown.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Path Operation Configuration](https://fastapi.org.cn/tutorial/path-operation-configuration/).
"""
),
] = None,
response_description: Annotated[
str,
Doc(
"""
The description for the default response.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = "Successful Response",
responses: Annotated[
dict[int | str, dict[str, Any]] | None,
Doc(
"""
Additional responses that could be returned by this *path operation*.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
deprecated: Annotated[
bool | None,
Doc(
"""
Mark this *path operation* as deprecated.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
"""
),
] = None,
operation_id: Annotated[
str | None,
Doc(
"""
Custom operation ID to be used by this *path operation*.
By default, it is generated automatically.
If you provide a custom operation ID, you need to make sure it is
unique for the whole API.
You can customize the
operation ID generation with the parameter
`generate_unique_id_function` in the `FastAPI` class.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = None,
response_model_include: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to include only certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_exclude: Annotated[
IncEx | None,
Doc(
"""
Configuration passed to Pydantic to exclude certain fields in the
response data.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = None,
response_model_by_alias: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response model
should be serialized by alias when an alias is used.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_include-and-response_model_exclude).
"""
),
] = True,
response_model_exclude_unset: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that were not set and
have their default values. This is different from
`response_model_exclude_defaults` in that if the fields are set,
they will be included in the response, even if the value is the same
as the default.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_defaults: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data
should have all the fields, including the ones that have the same value
as the default. This is different from `response_model_exclude_unset`
in that if the fields are set but contain the same default values,
they will be excluded from the response.
When `True`, default values are omitted from the response.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#use-the-response_model_exclude_unset-parameter).
"""
),
] = False,
response_model_exclude_none: Annotated[
bool,
Doc(
"""
Configuration passed to Pydantic to define if the response data should
exclude fields set to `None`.
This is much simpler (less smart) than `response_model_exclude_unset`
and `response_model_exclude_defaults`. You probably want to use one of
those two instead of this one, as those allow returning `None` values
when it makes sense.
Read more about it in the
[FastAPI docs for Response Model - Return Type](https://fastapi.org.cn/tutorial/response-model/#response_model_exclude_none).
"""
),
] = False,
include_in_schema: Annotated[
bool,
Doc(
"""
Include this *path operation* in the generated OpenAPI schema.
This affects the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for Query Parameters and String Validations](https://fastapi.org.cn/tutorial/query-params-str-validations/#exclude-parameters-from-openapi).
"""
),
] = True,
response_class: Annotated[
type[Response],
Doc(
"""
Response class to be used for this *path operation*.
This will not be used if you return a response directly.
Read more about it in the
[FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.org.cn/advanced/custom-response/#redirectresponse).
"""
),
] = Default(JSONResponse),
name: Annotated[
str | None,
Doc(
"""
Name for this *path operation*. Only used internally.
"""
),
] = None,
callbacks: Annotated[
list[BaseRoute] | None,
Doc(
"""
List of *path operations* that will be used as OpenAPI callbacks.
This is only for OpenAPI documentation, the callbacks won't be used
directly.
It will be added to the generated OpenAPI (e.g. visible at `/docs`).
Read more about it in the
[FastAPI docs for OpenAPI Callbacks](https://fastapi.org.cn/advanced/openapi-callbacks/).
"""
),
] = None,
openapi_extra: Annotated[
dict[str, Any] | None,
Doc(
"""
Extra metadata to be included in the OpenAPI schema for this *path
operation*.
Read more about it in the
[FastAPI docs for Path Operation Advanced Configuration](https://fastapi.org.cn/advanced/path-operation-advanced-configuration/#custom-openapi-path-operation-schema).
"""
),
] = None,
generate_unique_id_function: Annotated[
Callable[[APIRoute], str],
Doc(
"""
Customize the function used to generate unique IDs for the *path
operations* shown in the generated OpenAPI.
This is particularly useful when automatically generating clients or
SDKs for your API.
Read more about it in the
[FastAPI docs about how to Generate Clients](https://fastapi.org.cn/advanced/generate-clients/#custom-generate-unique-id-function).
"""
),
] = Default(generate_unique_id),
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add a *path operation* using an HTTP TRACE operation.
## Example
```python
from fastapi import APIRouter, FastAPI
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str | None = None
app = FastAPI()
router = APIRouter()
@router.trace("/items/{item_id}")
def trace_item(item_id: str):
return None
app.include_router(router)
```
"""
return self.api_route(
path=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,
methods=["TRACE"],
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,
)
on_event ¶
on_event(event_type)
为路由器添加事件处理器。
on_event 已弃用,请改用 lifespan 事件处理器。
更多信息请阅读 FastAPI 文档:生命周期事件。
| 参数 | 描述 |
|---|---|
event_type
|
事件类型。
类型: |
源代码位于 fastapi/routing.py
@deprecated(
"""
on_event is deprecated, use lifespan event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.org.cn/advanced/events/).
"""
)
def on_event(
self,
event_type: Annotated[
str,
Doc(
"""
The type of event. `startup` or `shutdown`.
"""
),
],
) -> Callable[[DecoratedCallable], DecoratedCallable]:
"""
Add an event handler for the router.
`on_event` is deprecated, use `lifespan` event handlers instead.
Read more about it in the
[FastAPI docs for Lifespan Events](https://fastapi.org.cn/advanced/events/#alternative-events-deprecated).
"""
def decorator(func: DecoratedCallable) -> DecoratedCallable:
self.add_event_handler(event_type, func)
return func
return decorator