欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中fastapi設(shè)置查詢參數(shù)可選或必選

 更新時(shí)間:2022年06月06日 08:44:17   作者:??小飛牛????  
這篇文章主要介紹了python中fastapi設(shè)置查詢參數(shù)可選或必選,文圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下

前言:

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

可選查詢參數(shù)

  • 只要給查詢參數(shù)的默認(rèn)值設(shè)置為None,表示該查詢參數(shù)是可選參數(shù)。
?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

補(bǔ)充:此時(shí)路徑操作函數(shù)內(nèi)的參數(shù)有兩個(gè),一個(gè)是路徑參數(shù)item_id,一個(gè)是查詢參數(shù)q,fastapi是可以區(qū)分他們的。

必選查詢參數(shù)

  • 當(dāng)你為查詢參數(shù)設(shè)置默認(rèn)值時(shí),則該參數(shù)在URL中不是必須的。
  • 如果你不想添加默認(rèn)值,而只是想使該參數(shù)成為可選的,則將默認(rèn)值設(shè)置為 None。
  • 但當(dāng)你想讓一個(gè)查詢參數(shù)成為必需的,不聲明任何默認(rèn)值就可以.
  • 比如:這里的查詢參數(shù) needy 是類(lèi)型為 str 的必需查詢參數(shù)。
?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中沒(méi)有查詢參數(shù)needy,則報(bào)錯(cuò)
?{
? ?  "detail": [
? ? ? ?  {
? ? ? ? ? ?  "loc": [
? ? ? ? ? ? ? ?  "query",
? ? ? ? ? ? ? ?  "needy"
? ? ? ? ? ?  ],
? ? ? ? ? ?  "msg": "field required",
? ? ? ? ? ?  "type": "value_error.missing"
? ? ? ?  }
? ?  ]
?}

可選和必選參數(shù)共存

  • 也可以定義一些參數(shù)為必需的,一些具有默認(rèn)值,而某些則完全是可選的
  • 此時(shí):itme_id是路徑參數(shù),needy是必選路徑參數(shù),skip是有默認(rèn)值必選查詢參數(shù),limit是可選查詢參數(shù)。
?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

為可選參數(shù)做類(lèi)型提示

  • 比如一個(gè)可選的參數(shù)q,如有該參數(shù)時(shí),他的類(lèi)型是整型,此時(shí)定義類(lèi)型提示如下
  • 使用typing模塊下的Union做類(lèi)型提示,Union[int, None]表示類(lèi)型是int或者None
  • 此時(shí)對(duì)于URL:http://127.0.0.1:8000/items/12?q=12,參數(shù)q就會(huì)自動(dòng)轉(zhuǎn)化為數(shù)字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

補(bǔ)充1:

  • 可能為空的情況做類(lèi)型提示,一般使用一個(gè)比typing.Union更加方便的類(lèi)型:typing.Optional
  • 因?yàn)椋?code>Optional[X] is equivalent to Union[X, None]
  • 所以,上面的類(lèi)似等價(jià)于q: Optional[int] = None\

補(bǔ)充2:

  • 只要給查詢參數(shù)默認(rèn)值None就表示它是可選查詢參數(shù),和類(lèi)型提示無(wú)關(guān)。
  • 類(lèi)型提示的功能在于如果該值存在是他應(yīng)該是什么類(lèi)型的變量并做類(lèi)型轉(zhuǎn)換和校驗(yàn)。

到此這篇關(guān)于python中fastapi設(shè)置查詢參數(shù)可選或必選的文章就介紹到這了,更多相關(guān)python fastapi 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論