日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

python中fastapi設置查詢參數可選或必選_python

作者:??小飛牛???? ? 更新時間: 2022-07-31 編程語言

前言:

在fastapi中,我們定義的查詢參數是可以設置成:必選參數 or 可選參數。

可選查詢參數

  • 只要給查詢參數的默認值設置為None,表示該查詢參數是可選參數。
?from fastapi import FastAPI
??
?app = FastAPI()?
?@app.get("/items/{item_id}")
?async def read_item(item_id: str, q=None):
? ? ?data = {"item_id": item_id}
? ? ?if q:
? ? ? ? ?data["q"] = q
? ? ?return data

補充:此時路徑操作函數內的參數有兩個,一個是路徑參數item_id,一個是查詢參數q,fastapi是可以區分他們的。

必選查詢參數

  • 當你為查詢參數設置默認值時,則該參數在URL中不是必須的。
  • 如果你不想添加默認值,而只是想使該參數成為可選的,則將默認值設置為?None
  • 但當你想讓一個查詢參數成為必需的,不聲明任何默認值就可以.
  • 比如:這里的查詢參數?needy?是類型為?str?的必需查詢參數。
?from fastapi import FastAPI
??
?app = FastAPI()?
?@app.get("/items/{item_id}")
?async def read_user_item(item_id: str, needy: str):
? ? ?item = {"item_id": item_id, "needy": needy}
? ? ?return item
  • 如果在URL中沒有查詢參數needy,則報錯
?{
? ?  "detail": [
? ? ? ?  {
? ? ? ? ? ?  "loc": [
? ? ? ? ? ? ? ?  "query",
? ? ? ? ? ? ? ?  "needy"
? ? ? ? ? ?  ],
? ? ? ? ? ?  "msg": "field required",
? ? ? ? ? ?  "type": "value_error.missing"
? ? ? ?  }
? ?  ]
?}

可選和必選參數共存

  • 也可以定義一些參數為必需的,一些具有默認值,而某些則完全是可選的
  • 此時:itme_id是路徑參數,needy是必選路徑參數,skip是有默認值必選查詢參數,limit是可選查詢參數。
?from fastapi import FastAPI
??
?app = FastAPI()
?@app.get("/items/{item_id}")
?async def read_user_item(
? ? ?item_id: str, needy: str, skip: int = 0, limit=None
?):
? ? ?item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit}
? ? ?return item

為可選參數做類型提示

  • 比如一個可選的參數q,如有該參數時,他的類型是整型,此時定義類型提示如下
  • 使用typing模塊下的Union做類型提示,Union[int, None]表示類型是int或者None
  • 此時對于URL:http://127.0.0.1:8000/items/12?q=12,參數q就會自動轉化為數字12
?from typing import Union?
?from fastapi import FastAPI
?app = FastAPI()?
?@app.get("/items/{item_id}")
?async def read_item(item_id: str, q: Union[int, None] = None):
? ? ?data = {"item_id": item_id}
? ? ?if q:
? ? ? ? ?data["q"] = q
? ? ?return data

補充1:

  • 可能為空的情況做類型提示,一般使用一個比typing.Union更加方便的類型:typing.Optional
  • 因為,Optional[X] is equivalent to Union[X, None]
  • 所以,上面的類似等價于q: Optional[int] = None\

補充2:

  • 只要給查詢參數默認值None就表示它是可選查詢參數,和類型提示無關。
  • 類型提示的功能在于如果該值存在是他應該是什么類型的變量并做類型轉換和校驗。

原文鏈接:https://juejin.cn/post/7105568560461643783

欄目分類
最近更新