日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

fastapi 查询参数和字符串校验 / 路径参数和数值校验

發布時間:2024/7/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 fastapi 查询参数和字符串校验 / 路径参数和数值校验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 約束限制
    • 2. 必須參數
    • 3. 查詢參數列表 / 多個值
    • 4. 聲明更多元數據
    • 5. 別名參數
    • 6. 棄用參數
    • 7. Path 路徑參數
    • 8. 按需對參數排序

learn from https://fastapi.tiangolo.com/zh/tutorial/query-params-str-validations/

1. 約束限制

from typing import Optional from fastapi import FastAPI, Queryapp = FastAPI()@app.get("/items/") async def read_items(q: Optional[str] = Query(None, max_length=50)):res = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}if q:res.update({"q":q})return res
  • Query(None, max_length=50) 顯示聲明為查詢參數,默認為 None, 最大長度50

  • 更多限制 Query(None, min_length=3, max_length=50)

  • 正則限制 Query(None, min_length=3, max_length=50, regex="^fixedquery"), 以 ^ 后面的字符開頭

    注意 None 是默認值,也可以是其它默認值,改參數是可選的

2. 必須參數

  • 將 默認值替換成 ...
  • q: Optional[str] = Query(..., min_length=3, max_length=50, regex="^fixedquery$")

3. 查詢參數列表 / 多個值

  • 添加 List[str],q: Optional[List[str]] = Query(None)

  • http://127.0.0.1:8000/items/?q=123456&q=7890&q=hahha

  • 在沒有任何給定值時,賦予默認值 q: Optional[List[str]] = Query(["mike","jason"]

  • 也可以使用 內置list ,注意此時程序不會檢查list內的參數類型 q: list = Query(["mike","jason"])

4. 聲明更多元數據

  • 添加 title,description
async def read_items(q: list = Query(["mike","jason"], title="查詢字符串", description="查詢匹配的item",) ):res = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}if q:res.update({"q":q})return res

5. 別名參數

你需要在瀏覽器里使用 參數 item-good,但是 python 不支持 - 作為變量名

  • q: Optional[str] = Query(None, alias = "item-good")

6. 棄用參數

將參數 deprecated=True 傳入 Query

7. Path 路徑參數

from fastapi import Path @app.get("/items/{item_id}") async def read_items(item_id:int = Path(..., title="the id of the item"),q : Optional[str] = Query(None, alias="item-query")):results = {"item_id": item_id}if q:results.update({"q": q})return results

  • 限制大小 item_id:int = Path(..., title="the id of the item", ge=23, le=24),[23.0, 24.0] 之間的 int
  • 路徑參數總是 必需的

8. 按需對參數排序

fastapi 會自動根據 參數的名稱類型默認值聲明(Query、Path 等)來檢測參數

from fastapi import Path @app.get("/items/{item_id}") async def read_items(q: str, item_id: int = Path(..., title="The ID of the item to get, hha", description="my description") ):results = {"item_id": item_id}if q:results.update({"q": q})return results

@app.get("/items/{item_id}") async def read_items(q:str, item_id: int = Path(..., title="The ID of the item to get") ):results = {"item_id": item_id}if q:results.update({"q": q})return results

對上面的代碼,參數 q,item_id 的順序如果調換了,會報錯

item_id: int = Path(..., title="The ID of the item to get"), q: str^ SyntaxError: non-default argument follows default argument

加入第一個參數 *,表示讓后面的所有參數作為鍵值對參數

@app.get("/items/{item_id}") async def read_items(*, item_id: int = Path(..., title="The ID of the item to get"), q:str ):results = {"item_id": item_id}if q:results.update({"q": q})return results

總結

以上是生活随笔為你收集整理的fastapi 查询参数和字符串校验 / 路径参数和数值校验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。