我们有这样的一个需求,我们希望可以看到接口的一个简单的请求示例展示在我们的接口文档中,应该如何实现呢。我们看下如何实现的:
- from fastapi import FastAPI
- from typing import Optional
- from pydantic import BaseModel
-
-
- app = FastAPI()
-
-
- class Item(BaseModel):
- name: str
- description: Optional[str] = None
- price: float
- tax: Optional[float] = None
-
- class Config:
- schema_extra = {
- # 这里就会展示在接口文档中
- "example": {
- "name": "lc",
- "description": "这是描述信息",
- "price": 300,
- "tax": 0.7
- }
- }
-
-
- @app.post("/items")
- def return_item(item: Item):
- result = {"item": item}
- return result
我们请求下试试

接口满足我们的请求,我们看下接口文档是否有请求的示例。

接口文档是正常有这个的示例。代码中使用Config 和 schema_extra 为Pydantic模型声明一个简单的示例。
其实我们在Field也会可以实现一个额外的信息,比如我们增加一个example字段,我们看下如何实现的,带来什么样的效果
- from fastapi import FastAPI
- from typing import Optional
- from pydantic import BaseModel, Field
-
-
- app = FastAPI()
-
-
- class Item(BaseModel):
- name: str
- description: Optional[str] = None
- price: float = Field(..., example=300)
- tax: Optional[float] = Field(None, example=0.6)
-
-
- @app.post("/items")
- def return_item(item: Item):
- result = {"item": item}
- return result
我们看下效果,正常的接口请求没有变动。

我们看下接口的文档。文档在解析的时候,会解析出来这个额外的信息。
当然像Body,Path等也都可以增加这些参数。
到目前为止,您一直在使用常见的数据类型,如:
int, float, str, bool
但是您也可以使用更复杂的数据类型。
您仍然会拥有现在已经看到的相同的特性:
其他数据类型
下面是一些你可以使用的其他数据类型:
下面是一个接口操作的示例,其中的参数使用了上面的一些类型。
- from fastapi import FastAPI, Body
- from typing import Optional
- from pydantic import BaseModel, Field
- from uuid import UUID
- from datetime import datetime, timedelta, time
-
-
- app = FastAPI()
-
-
- @app.post("/items/{item_id}")
- def return_item(
- item_id: UUID,
- start_time: Optional[datetime] = Body(None),
- end_time: Optional[datetime] = Body(None),
- after: Optional[timedelta] = Body(None)
- ):
- start_process = start_time
- duration = end_time - start_time
- return {
- "id": item_id,
- "start_datetime": start_time,
- "end_datetime": end_time,
- "after": after,
- "start_process": start_process,
- "duration": duration
- }
那么我们看下接口文档的请求

UUId来源 http://www.uuid.online/可以生成。
这样就是我们利用了这些参数的一个请求。
