lqs
d20566fe07
Some checks failed
Test / lint (push) Has been cancelled
Test / test (pydantic-v1, 3.10) (push) Has been cancelled
Test / test (pydantic-v1, 3.11) (push) Has been cancelled
Test / test (pydantic-v1, 3.12) (push) Has been cancelled
Test / test (pydantic-v1, 3.8) (push) Has been cancelled
Test / test (pydantic-v1, 3.9) (push) Has been cancelled
Test / test (pydantic-v2, 3.10) (push) Has been cancelled
Test / test (pydantic-v2, 3.11) (push) Has been cancelled
Test / test (pydantic-v2, 3.12) (push) Has been cancelled
Test / test (pydantic-v2, 3.8) (push) Has been cancelled
Test / test (pydantic-v2, 3.9) (push) Has been cancelled
Test / coverage-combine (push) Has been cancelled
Test / check (push) Has been cancelled
Issue Manager / issue-manager (push) Has been cancelled
Label Approved / label-approved (push) Has been cancelled
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
from typing import List
|
|
|
|
from fastapi import FastAPI
|
|
from pydantic import BaseModel
|
|
|
|
app = FastAPI()
|
|
|
|
|
|
class RecursiveItem(BaseModel):
|
|
sub_items: List["RecursiveItem"] = []
|
|
name: str
|
|
|
|
|
|
RecursiveItem.update_forward_refs()
|
|
|
|
|
|
class RecursiveSubitemInSubmodel(BaseModel):
|
|
sub_items2: List["RecursiveItemViaSubmodel"] = []
|
|
name: str
|
|
|
|
|
|
class RecursiveItemViaSubmodel(BaseModel):
|
|
sub_items1: List[RecursiveSubitemInSubmodel] = []
|
|
name: str
|
|
|
|
|
|
RecursiveSubitemInSubmodel.update_forward_refs()
|
|
|
|
|
|
@app.get("/items/recursive", response_model=RecursiveItem)
|
|
def get_recursive():
|
|
return {"name": "item", "sub_items": [{"name": "subitem", "sub_items": []}]}
|
|
|
|
|
|
@app.get("/items/recursive-submodel", response_model=RecursiveItemViaSubmodel)
|
|
def get_recursive_submodel():
|
|
return {
|
|
"name": "item",
|
|
"sub_items1": [
|
|
{
|
|
"name": "subitem",
|
|
"sub_items2": [
|
|
{
|
|
"name": "subsubitem",
|
|
"sub_items1": [{"name": "subsubsubitem", "sub_items2": []}],
|
|
}
|
|
],
|
|
}
|
|
],
|
|
}
|