我有一个包含两部分输入的 API,一个 pydantic 类和一个 str 列表。 str 列表可以有零个或多个项目。
from typing import List
from fastapi import FastAPI, Query, Depends
from pydantic import BaseModel
class Item(BaseModel):
item_x: str
item_y: str
app = FastAPI()
@app.get("/items")
async def read_items(item: Item = Depends(),related_items: List[str]=Query(None)):
return "something"
注意:这不是我的实际代码。我的实际代码有几个额外的字段和输入。
在 swagger UI 中,related_items 出现在 item 之前。
有没有办法改变顺序,让swagger UI以不同的顺序显示字段? 我做了一些谷歌搜索,但找不到适合我的场景的任何解决方案。在另一个论坛中,人们建议创建一个 pydantic 类并将所有内容都放在类中,但这对我不起作用。我更喜欢使用 Query for related_items 并在 swagger UI 中具有“添加字符串项目”按钮。
在 OpenAPI 架构中,不带
Depends
的参数似乎出现在带 Depends
的参数之前。
此代码生成您想要的模式:
from typing import List
from fastapi import FastAPI, Query, Depends
from pydantic import BaseModel
class Item(BaseModel):
item_x: str
item_y: str
app = FastAPI()
def related_items(related_items: List[str] = Query(None)):
return related_items
@app.get("/items")
async def read_items(item: Item = Depends(), related_items: List[str]=Depends(related_items)):
return "something"
您还可以修改 OpenAPI 架构,如文档中所示:https://fastapi.tiangolo.com/how-to/extending-openapi/#modify-the-openapi-schema