FastAPI/SwaggerUI 中如何排序字段

问题描述 投票:0回答:1

我有一个包含两部分输入的 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 中具有“添加字符串项目”按钮。

fastapi swagger-ui
1个回答
0
投票

在 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

© www.soinside.com 2019 - 2024. All rights reserved.