No.47-fastapi返回結(jié)果中嵌套Model List

溫馨提示:
讀完本文大約需要 3 分鐘末早;
這是一篇技術(shù)類文章烟馅;
需要對(duì)fastapi有一定的了解;
代碼部分橫屏觀看更佳荐吉。

前言

最近在使用 FastApi 為后端框架進(jìn)行一個(gè)項(xiàng)目的開發(fā)焙糟,在 FastApi 使用過程中,在寫返回?cái)?shù)據(jù)列表的時(shí)候样屠,不知道怎么處理穿撮,特此記錄一下,以便以后查閱痪欲。

編寫列表接口時(shí)候整體流程

  1. 編寫 schema , 以便對(duì)返回的數(shù)據(jù)進(jìn)行序列化處理
  2. 編寫 crud , 進(jìn)行業(yè)務(wù)處理悦穿,跟數(shù)據(jù)庫進(jìn)行交互
  3. 編寫入口函數(shù),定義 路由 url 以及 入?yún)?/code>
1. 編寫 schema
from pydantic import BaseModel

class CaseSchemaDetail(BaseModel):
    id: int
    name: str
    case_level: str
    marks: str = None
    remark: str = None
    module_id: int

    create_time: datetime
    update_time: datetime

    class Config:
        orm_mode = True

這里先導(dǎo)出 pydantic 的類 BaseModel业踢,再繼承 BaseModel栗柒。

書寫格式舉例子:marks: str = None

  • marks: 需要展示的字段的名字,跟對(duì)應(yīng)的 model 的名字一致
  • str:字段的類型
  • None:字段的默認(rèn)值
2. 編寫 crud
def get_cases(db: Session):
    """
    查詢用例列表

    :param db:
    :return:
    """
    return db.query(Case).all()

這里比較簡(jiǎn)單知举,直接進(jìn)行查詢就可以啦

3. 編寫入口函數(shù)
@app.get("/cases", response_model=Page[case_schema.CaseSchemaDetail])
async def read_cases(db: SessionLocal = Depends(get_db)):
    """
    查詢用例列表

    :param db: db session
    :return:
    """
    return paginate(case_crud.get_cases(db))

response_model 這里使用了 Page 對(duì)返回結(jié)果進(jìn)行處理瞬沦,返回結(jié)果是這樣的:

{
  "items": [
    {
      "id": 0,
      "name": "string",
      "case_level": "string",
      "marks": "string",
      "remark": "string",
      "module_id": 0,
      "create_time": "2022-08-21T02:42:29.209Z",
      "update_time": "2022-08-21T02:42:29.209Z"
    }
  ],
  "total": 0,
  "page": 1,
  "size": 1
}
后記:返回字段中,其中格式是 list 的字段怎么處理雇锡,即多層嵌套

schema 類里面進(jìn)行處理就好啦:

from typing import List

class CaseSchemaDetail(BaseModel):
    id: int
    name: str
    case_level: str
    marks: str = None
    remark: str = None
    module_id: int
    modules: List[ModuleSchemaDetail] = []

    create_time: datetime
    update_time: datetime

    class Config:
        orm_mode = True

這里新添加了一個(gè)字段 modules , 這個(gè)字段的類型聲明為 List, list 里面的內(nèi)容為:ModuleSchemaDetail, 默認(rèn)為 []

返回結(jié)果是這樣的:

{
  "items": [
    {
      "id": 0,
      "name": "string",
      "case_level": "string",
      "marks": "string",
      "remark": "string",
      "module_id": 0,
      "modules": [
        {
          "id": 0,
          "name": "string",
          "remark": "string",
          "create_time": "2022-08-21T02:46:37.003Z",
          "update_time": "2022-08-21T02:46:37.003Z"
        }
      ],
      "create_time": "2022-08-21T02:46:37.003Z",
      "update_time": "2022-08-21T02:46:37.003Z"
    }
  ],
  "total": 0,
  "page": 1,
  "size": 1
}

每日踩一坑逛钻,生活更輕松。

本期分享就到這里啦锰提。祝君在測(cè)開之路上越走越順曙痘,越走越遠(yuǎn)。

gzh:測(cè)開工程師的煩惱

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末立肘,一起剝皮案震驚了整個(gè)濱河市边坤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谅年,老刑警劉巖茧痒,帶你破解...
    沈念sama閱讀 219,366評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異融蹂,居然都是意外死亡旺订,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門殿较,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人桩蓉,你說我怎么就攤上這事淋纲。” “怎么了院究?”我有些...
    開封第一講書人閱讀 165,689評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵洽瞬,是天一觀的道長(zhǎng)本涕。 經(jīng)常有香客問我,道長(zhǎng)伙窃,這世上最難降的妖魔是什么菩颖? 我笑而不...
    開封第一講書人閱讀 58,925評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮为障,結(jié)果婚禮上晦闰,老公的妹妹穿的比我還像新娘。我一直安慰自己鳍怨,他們只是感情好呻右,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鞋喇,像睡著了一般声滥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侦香,一...
    開封第一講書人閱讀 51,727評(píng)論 1 305
  • 那天落塑,我揣著相機(jī)與錄音,去河邊找鬼罐韩。 笑死憾赁,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的伴逸。 我是一名探鬼主播缠沈,決...
    沈念sama閱讀 40,447評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼错蝴!你這毒婦竟也來了洲愤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,349評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤顷锰,失蹤者是張志新(化名)和其女友劉穎柬赐,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體官紫,經(jīng)...
    沈念sama閱讀 45,820評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡肛宋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了束世。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酝陈。...
    茶點(diǎn)故事閱讀 40,127評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖毁涉,靈堂內(nèi)的尸體忽然破棺而出沉帮,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,812評(píng)論 5 346
  • 正文 年R本政府宣布穆壕,位于F島的核電站待牵,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喇勋。R本人自食惡果不足惜缨该,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望川背。 院中可真熱鬧贰拿,春花似錦、人聲如沸渗常。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽皱碘。三九已至询一,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間癌椿,已是汗流浹背健蕊。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留踢俄,地道東北人缩功。 一個(gè)月前我還...
    沈念sama閱讀 48,388評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像都办,于是被迫代替她去往敵國(guó)和親嫡锌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容